Javaでif文を使ってIllegalArgumentExceptionを事前に回避する方法
Javaでは、IllegalArgumentException(不正な引数例外)は、メソッドに渡された引数が不正な値である場合にスローされます。しかし、多くの場合、開発者はそのメソッドが受け付ける正当な引数の範囲をあらかじめ把握しています。そこで、if文を使って引数を実行前に検証(バリデーション)することで、例外の発生自体を防ぐことができます。
if文による引数の事前チェック
if文を使えば、メソッドに渡す引数の値を制限できます。例えば、あるメソッドが特定の範囲内の値のみを受け入れる場合、メソッドを呼び出す前にif文で引数の範囲を確認すればよいのです。これにより、範囲外の値が渡されることを未然に防ぎ、IllegalArgumentExceptionの発生を回避できます。
サンプルコード
以下の例では、setPriority()メソッドによって発生する可能性のあるIllegalArgumentExceptionを、if文による事前チェックで処理しています。
import java.util.Scanner;
public class IllegalArgumentExample {
public static void main(String args[]) {
Thread thread = new Thread();
System.out.println("スレッドの優先度を入力してください: ");
Scanner sc = new Scanner(System.in);
int priority = sc.nextInt();
if(priority <= Thread.MAX_PRIORITY) {
thread.setPriority(priority);
} else {
System.out.println("優先度の値は " + Thread.MAX_PRIORITY + " 以下である必要があります");
}
}
}
実行結果
スレッドの優先度を入力してください: 15 優先度の値は 10 以下である必要があります
このように、ユーザーが「15」という不正な優先度を入力した場合でも、if文によるチェックによって例外がスローされる前に適切なエラーメッセージが表示され、プログラムは正常に動作し続けます。
ポイントまとめ
Thread.MAX_PRIORITY(値は10)より大きい値をsetPriority()に渡すと、IllegalArgumentExceptionが発生します。- try-catchで例外を捕捉する方法もありますが、事前に入力値を検証する方がコードの意図が明確になり、可読性も向上します。
- 引数の妥当性チェックは、メソッド呼び出し直前に行うのがベストプラクティスです。
-
JavaとOpenCVで長方形を描画する方法|Imgproc.rectangle()の使い方を徹底解説
Java用OpenCVライブラリの org.opencv.imgproc パッケージには、Imgproc クラスが含まれています。画像に長方形を描画するには、このクラスが提供する rectangle() メソッドを使用します。 このメソッドは以下のパラメータを受け取ります。 Matオブジェクト:長方形を描画する対象となる画像を表します。 Pointオブジェクト(2つ):描画する長方形の対角となる2つの頂点座標を表します。 Scalarオブジェクト:長方形の色をBGR形式で指定します。 整数値:長方形の枠線の太さを指定します(デフォルト値は1)。 サンプルコード 以下は、白紙の画像に長方形を
-
JavaとOpenCVで線を描画する方法をわかりやすく解説
Java版OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocというクラスが含まれています。画像に直線を描画するには、このクラスが提供するline()メソッドを呼び出します。 line()メソッドのパラメータ line()メソッドは、以下のパラメータを受け取ります。 Matオブジェクト ― 直線を描画する対象となる画像を表します。 Pointオブジェクト2つ ― 直線の始点と終点の座標を表します。 Scalarオブジェクト ― 直線の色をBGR形式で指定します。 整数値 ― 直線の太さを指定します(デフォルト値:1)。 サンプルコード 以下は、白紙の画