トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Javaの文法:例外処理

例外処理

 例外とは

  • 例外とは予期せぬエラーのことで、例外処理を用意しない場合にはJavaはエラーメッセージを出力し、プログラムを中断してしまう
  • 例外処理は、あらかじめ、発生しそうな例外に対してその対処法を用意しておき、実際にエラーが起きたときには何らかの対処を行うことである。例外処理を用意しておくことで、プログラムを何らかの障害が起きても中断しない、より信頼性の高いものにすることができる。
  • 例えば、ファイルの読み込み処理を行う場合に、指定したファイルが存在しなければその時点で、FileNotFoundExceptionという例外が発生する(スローされる)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package sample;

import java.io.FileReader;
import java.io.IOException;

public class TryCatch {
    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader("絶対にありえないファイル");    //ここで絶対にないファイルを開こうとする
            System.out.println("ファイル「絶対にありえないファイル」が開かれました!!");
            reader.close();
        } catch (IOException e) {        //開けないのでFileNotExceptionがスローされる
            e.printStackTrace();
        }
        try {
            @SuppressWarnings("unused")
            int i = 10/0;    //0で除算することはできないため、例外が発生する
            System.out.println("0で除算ができる場合、この文が表示されます。");
        } catch(ArithmeticException e) {
            e.printStackTrace();
        }
    }
}

 try〜catch文の構文

try {
	<例外が発生するかもしれない処理>
} catch(<発生しそうな例外クラス> <変数名>) {
	<例外への対処法>
}

 複数の例外

  • 同じtryブロック中で発生しそうな複数の例外にはcatch文を複数用意することで対処できる。
    • 同じ場所で発生するかもしれない複数の例外をより特定的な例外からより一般的な例外へと列挙することで対応する特定的な例外が書かれている場合にはその処理を書かれていない場合には一般的な例外に対して例外処理を行うことができる。
  • 例外の一番基本となるクラスはExceptionであり、どの例外もExceptionを継承している。つまり、catch文でExceptionを書いた場合には全ての例外をそのcatch節でキャッチすることになる。
try {
	<例外が発生するかもしれない処理>
} catch(<発生しそうな例外クラス1> <変数名>) {
	<例外への対処>
} catch(<発生しそうな例外クラス2> <変数名>) {
	<例外への対処>
}
例外ハンドラ
例外への対処の処理を例外ハンドラと呼ぶ

 エラー(Error)、実行時例外(RuntimeException)、例外(Exception)、


 finally節

  • 例外が発生してもしなくても絶対に実行したい処理を書いておく。例えば、データベースの入出力を行う処理があった場合に、途中でどんな例外が発生しようが何があろうが、そのデータベースのクローズは絶対に行いたい場合には、try〜catch文のfinally節にデータベースのクローズ処理を書いておく
  • tryブロック中にreturn文があったとしてもfinally節は実行される
try {
	<例外が発生するかもしれない処理>
} catch(<発生しそうな例外クラス> <変数名>) {
	<例外への対処法>
} finally {
	<例外が発生してもしなくても実行したい処理>
}
TryCatch.java

最終更新時間:2007年05月30日 22時30分25秒