throwを使って例外を扱う
Javaでは例外の処理方法が2通りあります。
1つは自分で処理(catch)する、もう1つは他人(メソッドの呼び出し元)に任せる(throw)のいずれかです。
下のsampleはExamThrow2で発生した例外の処理を呼び出し元(
ExamThrow )に任せています。
import java.io.*;
public class ExamThrow {
public static void main(String args[]) {
ExamThrow2 et2 = new ExamThrow2();
try {
FileInputStream fis = et2.fileConnect("test.txt");
System.out.println(fis);
} catch(IOException ioe) {
System.out.println(ioe);
}
}
}
class ExamThrow2 {
FileInputStream fileConnect(String file_name)
throws FileNotFoundException, IOException {
FileInputStream fis = new FileInputStream(file_name);
return fis;
}
}
| <実行結果> カレントディレクトリにファイル"text.txt"がある場合、コンソール画面に java.io.FileInputStream@47e553 と表示されます。@以降のハッシュコードはその都度変わります。 カレントディレクトリにファイル"text.txt"が無い場合、コンソール画面に java.io.FileNotFoundException: text.txt (No such file or directory ) と表示されます。 catch文ではIOExceptionでまとめて、catchされていますが、.FileNotFoundExceptionである事は判別できます。 |
<自分で例外を生成する>
sampleではFileInputStreamがthrowしたFileNotFoundExceptionを扱っていますが、
プログラムの中で例外クラスのオブジェクトを生成し、throwすることも出来ます。
thow new IOException(String Message);
生成される例外はメソッド宣言のthrows以下で扱われなければいけません。
(java.lang.RuntimeExceptionを継承する例外は明示的に記述されなくても構いません。)
throwsはメソッド宣言文の中で使い、throwは例外の生成時に使います。