Java 例外処理
Java 例外処理
このチュートリアルでは、例を使って Java での例外処理のさまざまなアプローチについて学びます。
前回のチュートリアルでは、Java の例外について学びました。例外がプログラムの実行を異常終了させることはわかっています。
これが、例外を処理することが重要な理由です。 Java で例外を処理するためのさまざまなアプローチのリストを次に示します。
- トライ...キャッチブロック
- ついにブロック
- throw と throws キーワード
1. Java try...catch ブロック
try-catch ブロックは、Java で例外を処理するために使用されます。 try...catch の構文は次のとおりです。 ブロック:
try {
// code
}
catch(Exception e) {
// code
}
ここでは、例外を生成する可能性のあるコードを try 内に配置しました。 ブロック。 tryごと ブロックの後には catch が続きます ブロックします。
例外が発生すると、catch によってキャッチされます ブロック。 catch ブロックは try なしでは使用できません ブロックします。
例:try...catch を使用した例外処理
class Main {
public static void main(String[] args) {
try {
// code that generate exception
int divideByZero = 5 / 0;
System.out.println("Rest of code in try block");
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
}
} 出力
ArithmeticException => / by zero
この例では、数値を 0 で割ろうとしています .ここで、このコードは例外を生成します。
例外を処理するために、コード 5 / 0 を入れました。 try の中 ブロック。例外が発生すると、 try 内の残りのコードは ブロックはスキップされます。
catch ブロックが例外をキャッチし、catch ブロック内のステートメントが実行されます。
try 内のステートメントがない場合 ブロックは例外 catch を生成します ブロックはスキップされます。
2. Javaがついにブロック
Java では、finally ブロックは、例外の有無にかかわらず常に実行されます。
finally ブロックはオプションです。そして、try ごとに finally は 1 つだけです。 ブロックします。
finally の基本構文 ブロックは:
try {
//code
}
catch (ExceptionType1 e1) {
// catch block
}
finally {
// finally block always executes
}
例外が発生した場合、finally ブロックは try...catch の後に実行されます ブロック。それ以外の場合は、try ブロックの後に実行されます。 tryごとに ブロック、finally は 1 つしか存在できません ブロックします。
例:finally ブロックを使用した Java 例外処理
class Main {
public static void main(String[] args) {
try {
// code that generates exception
int divideByZero = 5 / 0;
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
finally {
System.out.println("This is the finally block");
}
}
} 出力
ArithmeticException => / by zero This is the finally block
上記の例では、数値を 0 で割っています。 try の中 ブロック。ここで、このコードは ArithmeticException を生成します .
例外は catch によってキャッチされます ブロック。そして、finally ブロックが実行されます。
注意 :finally を使用することをお勧めします ブロック。これは、
- return、continue、break によって誤ってスキップされる可能性のあるコード
- ファイルまたは接続を閉じる
3. Java の throw と throws キーワード
Java throw キーワードは、単一の例外を明示的にスローするために使用されます。
throw 例外として、プログラムの流れは try から移動します catch へのブロック ブロックします。
例:Java throw を使用した例外処理
class Main {
public static void divideByZero() {
// throw an exception
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
} 出力
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
at Main.divideByZero(Main.java:5)
at Main.main(Main.java:9)
上記の例では、明示的に ArithmeticException をスローしています。 throw を使用して キーワード。
同様に、throws キーワードは、メソッド内で発生する可能性のある例外の種類を宣言するために使用されます。メソッド宣言で使用されます。
例:Java がキーワードをスローする
import java.io.*;
class Main {
// declareing the type of exception
public static void findFile() throws IOException {
// code that may generate IOException
File newFile = new File("test.txt");
FileInputStream stream = new FileInputStream(newFile);
}
public static void main(String[] args) {
try {
findFile();
}
catch (IOException e) {
System.out.println(e);
}
}
} 出力
java.io.FileNotFoundException: test.txt (The system cannot find the file specified)
このプログラムを実行すると、ファイル test.txt 存在しません、FileInputStream FileNotFoundException をスローします IOException を拡張します クラス。
findFile() メソッドは IOException を指定します 投げることができます。 main() メソッドはこのメソッドを呼び出し、例外がスローされた場合はそれを処理します。
メソッドが例外を処理しない場合、その中で発生する可能性のある例外の種類を throws で指定する必要があります
詳細については、Java のスローとスローにアクセスしてください。
Java