Javaの例外-試してください...キャッチ
Javaの例外
Javaコードを実行すると、プログラマーによるコーディングエラー、誤った入力によるエラー、その他の予期しないエラーなど、さまざまなエラーが発生する可能性があります。
エラーが発生すると、Javaは通常停止し、エラーメッセージを生成します。これの専門用語は次のとおりです。Javaは例外をスローします(エラーをスローします)。
Javaを試してキャッチ
このtry
ステートメントを使用すると、実行中にエラーをテストするコードのブロックを定義できます。
このcatch
ステートメントを使用すると、tryブロックでエラーが発生した場合に、実行するコードのブロックを定義できます。
try
とcatch
キーワードはペアになっています。
構文
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
次の例を考えてみましょう。
myNumbers [10]が存在しないため、これによりエラーが生成されます。
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
出力は次のようになります。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
エラーが発生した場合は、を使用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("Something went wrong.");
}
}
}
出力は次のようになります。
Something went wrong.
ついに
このステートメントを使用すると、結果に関係なく、の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("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
出力は次のようになります。
Something went wrong.
The 'try catch' is finished.
throwキーワード
このthrow
ステートメントを使用すると、カスタムエラーを作成できます。
このステートメントは、例外タイプthrow
と一緒に使用されます。Javaで
使用できる例外タイプには、、、、、などがあります。ArithmeticException
FileNotFoundException
ArrayIndexOutOfBoundsException
SecurityException
例
年齢が18歳未満の場合は、例外をスローします(「アクセスが拒否されました」と印刷します)。18歳以上の場合は、「アクセス許可」と印刷してください。
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
出力は次のようになります。
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
20歳の場合、例外は発生しません。
例
checkAge(20);
出力は次のようになります。
Access granted - You are old enough!