演習課題「間違い探し」
右のコードは、ファイルに0から99まで1行ずつ書き込んで表示するプログラムですが、コンパイルエラーになってしまいます。コードを修正して、プログラムを完成させてください。
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
#13:throwとtry-catchで再スローしよう
ここでは、throwとtry-catchを組み合わせる再スローについて学習します。再スローでは、メソッドのcatchブロックの中から、受け取った例外を呼び出し元にスローします。そのおかげで、捕捉した例外を、catchのところで出来るだけ対応して、残りの作業を呼び出し元に任せることができます。
// 例外処理 - 再スロー
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
File file = new File("articles.txt");
// ファイル書き込み
try (FileWriter filewriter = new FileWriter(file)) {
filewriter.write("Hello world\n");
filewriter.write("Hello Java\n");
} catch (IOException e) {
System.err.println("ファイル書き込みに失敗しました");
e.printStackTrace();
}
// ファイル読み込み
file = new File("articles.txt");
try (Scanner scan = makeScanner(file)) {
while (scan.hasNextLine()) {
String line = scan.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.err.println("ファイル読み込みに失敗しました");
e.printStackTrace();
}
}
public static Scanner makeScanner(File file) throws FileNotFoundException {
try {
Scanner scan = new Scanner(file);
return scan;
} catch (FileNotFoundException e) {
System.err.println("makeScannerで例外を検出しました");
throw e;
}
}
}
- Java 入門 | 単純な例外処理
http://msugai.fc2web.com/java/trydemo.html
- throw命令 | Javaコード入門
http://java-code.jp/138
- Javaの道:例外(3.throws、throw)
http://www.javaroad.jp/java_exception3.htm
- 【Java初心者向け】throwとthrowsの違いとその使い方
https://eng-entrance.com/java-throw-and-throws
- Java 7 以降で導入された、より厳密な型チェックによる「例外再スロー」を理解する - Qiita
https://qiita.com/daylife/items/0308a0c6fd5bccbc9431
- 複数の例外型のキャッチと型チェックが改善された例外再スロー
https://docs.oracle.com/javase/jp/7/technotes/guides/language/catch-multiple.html