java.lang.IllegalArgumentException
がjava.awt.Color
コンストラクタでスローされる
症状Sun JavaTM Runtime Environment (JRETM) を使ってブラウザ内でアプレットを実行すると、
java.awt.Color
コンストラクタでjava.lang.IllegalArgumentException
がスローされます。同じアプレットが Microsoft Virtual Machine (VM) では実行できます。原因
この例外は、Sun JRE で境界値を超えた値や境界値に達しない値が Sun JRE の
Color
コンストラクタで渡されるために起こります。Sun JRE の Java クラスライブラリは時間の経過とともに変化してきました。詳細になった API もあれば、廃止された API もあります。 また、実装が変更された API もあります。
Color
コンストラクタで上限や下限を超える値を渡した場合の結果は、明確に定義されていません。Microsoft VM は、値を最大カラー値や最小カラー値に自動的に再調整します。Sun JRE はjava.lang.IllegalArgumentException
を使って範囲外の値が指定されたことを示します。解決方法
有効なカラー値だけが
Color
コンストラクタに渡されるようにするコードを記述します。たとえば、次の構造のコードがあるとします。void Color newColor(int r, int g, int b) { return new Color(r, g, b); }次に示すように、有効なカラー値だけがカラーコンストラクタに渡されるようにコードを変更します。
int ensureColorRange(int v) { if (v < 0) return 0; else if (v > 255) return 255; else return v; }void Color newColor(int r, int g, int b) { r = ensureColorRange(r); g = ensureColorRange(g); b = ensureColorRange(b); return new Color(r, g, b); }詳細情報
なし