Java 例外(Try...Catch)
Java 例外
Javaコードを実行すると、さまざまなエラーが発生する可能性があります。プログラマーによるコーディングエラー、間違った入力によるエラー、またはその他の予測不可能なエラーです。
エラーが発生すると、Javaは通常停止し、エラー メッセージを生成します。専門用語では、Javaは例外を投げる(エラーを投げる)と言います。
Javaのtry & catch
try
文は、実行中にエラーがないかテストするコードブロックを定義できます。
catch
文は、tryブロックでエラーが発生した場合に実行するコードブロックを定義できます。
try
とcatch
キーワードはペアになっています。
構文
try {
// tryコードブロック
}
catch(Exception e) {
// エラーを処理するコードブロック
}
// tryコードブロック
}
catch(Exception e) {
// エラーを処理するコードブロック
}
次の例を確認してください。
myNumbers[10]が存在しないためエラーが発生します。
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); //エラー
}
}
以下のように出力されます。
`Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)`
at Main.main(Main.java:4)`
エラーが発生した場合は、try...catch
を使用してエラーをキャッチし、それを処理するコードを実行します。
例
public class Main {
static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("エラー発生。");
}
}
}
出力は次のようになります。
エラー発生。
Finally
finally
文は、try...catch
の後に、結果に関係なくコードを実行します。
例
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("エラー発生。");
} finally {
System.out.println("try catchブロックの処理終了。");
}
}
}
出力は次のようになります。
エラー発生。
try catchブロックの処理終了。
try catchブロックの処理終了。
throwキーワード
throw
文は、カスタムエラーを作成できます。
throw
文は、例外型とともに使用されます。Javaには多くの例外の種類があります。ArithmeticException
、FileNotFoundException
、ArrayIndexOutOfBoundsException
、SecurityException
など。
例
年齢が18歳未満の場合は例外をスローします(「アクセスが拒否されました」と出力)。年齢が18歳以上の場合は、「アクセス許可」を出力します。
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("アクセス拒否 - 18歳以上である必要があります。");
} else {
System.out.println("アクセス許可 - 規定の年齢を超えています。");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
出力は次のようになります。
`Exception in thread "main" java.lang.ArithmeticException: アクセス拒否 - 18歳以上である必要があります。
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)`
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)`
もしも年齢が20歳の場合、例外を受け取りません。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。