こんにちは、コイキングです。
本記事では'例外処理'について、説明したいと思います。
1. 例外処理とは?
例外処理はプログラムの実行中に予想されていない結果が発生した際の対応を言います。
例えるとコンソールからユーザー入力で'数字データ'を入力するべきものを'文字列データを入力してもらい'、文字列のデータを数字変数に代入しようとする場合
プログラムは例外を発生させます。
上記のような状況で 1) 例外発生の理由をログなどで知らせたり、2) 例外が発生した際に必要なロジックを実行することなどを例外処理で担います。
2. try-catch構文
try-catch構文は 例外が発生が予想されたり、必ず例外処理をしないといけないコード囲み例外を処理します。
例外発生が予想される所のコードをtry構文で囲んで、catch構文に例外を処理するロジックを記載します。
File file = new File("newFile.txt");
//file.createNewFile(); // ファイル作成時に例外処理をしないとコンパイルエラーが発生
try {
file.createNewFile(); // 例外発生がよそされるところをtry構文に囲む
} catch (Exception e) {
e.printStackTrace();
}
3. メソッドにthrowsを宣言する
メソッドにthrowsを宣言すると、メソッド内部では別途try-catch構文をセットする必要はありません。
しかし、メソッドにthrowsを宣言するだけで終わりません。
throws宣言の意味は例外処理をメソッドを呼出した所で行うという意味でメソッドを呼出した所でtry-catch構文を使い例外処理をする必要があります。
// メソッドにthrowsを付けると例外処理をメソッドの呼出した所で行える。
try {
writeFile(file);
} catch (Exception e) {
e.printStackTrace();
}
// 呼出した所で処理する例外の種類は複数セットできます。
// ex) throws IOException, Exception {...
public static void writeFile(File file) throws IOException {
List<String> list = new ArrayList<String>();
list.add("ArrayList-String01"); // Index 0
list.add("ArrayList-String02"); // Index 1
list.add("ArrayList-String03"); // Index 2
BufferedWriter wr = null;
wr = new BufferedWriter(new FileWriter(file, true));
for (String var : list) {
wr.append(var);
wr.append("\n");
}
wr.flush();
if (wr != null) {
wr.close();
wr = null;
}
}
4. throwにて例外を発生させる
throwを使うとわざと例外を発生させることができます。
try {
if (file.exists()) {
System.out.println(file.getCanonicalPath());
throw new Exception("file exist!!");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("file delete!!");
file.delete();
}
※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_14_Exception.java
※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/86?category=1068655