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