JavaSilver_躓いた問題をまとめてみた② 例外処理その1

f:id:nowa0402:20210520184724p:plain

こんにちは。のわです。
今回は現在勉強中のJavaSilverから
例外についてまとめたいと思います。


例外とはなにか
一言でいうなら『プログラム実行中に想定外の状況になる』という現象です。

そして、例外処理とは
『例外に対する対策』をすることです。

早速コードを見てみましょう。

import java.io.*;

public class Main {
  public static void main(String[] args) {
    try {
      FileReader fw = new FileReader("date.txt");
    } catch (IOException e) {
      System.out.println("エラーが発生しました");
      System.out.println(e);
    }
  }
}

例外の基本文法は「try-catch」文です。
try文が通常処理
catch文が例外発生時の処理内容になります。

上記コードの解説です。
FileReaderを使用し、date.txtのファイルを読み出そうとしています。
このコード自体は問題がないのでコンパイルエラーとはなりません。

例外が発生するのは実行時です。

プログラムを実行した際、try文の中を処理しします。
プログラムはdate.txtを読み出します。
その時、date.txtが存在しないと例外発生となります。
(java.io.FileNotFoundException: date.txt (No such file or directory))

上記例外が出た際に、プログラムはcatch文に移行します。
catch文の構文は以下のとおりです。
catch(例外クラス 変数名)

変数名には例外内容が入ります。(今回だとFileNotFoundException)
その後は任意の処理内容を記載します。

では、次に上記コードに文を追加しましょう。

import java.io.*;

public class Main {
  public static void main(String[] args) {
    try {
      FileReader fw = new FileReader("date.txt");
    } catch (IOException e) {
      System.out.println("エラーが発生しました");
      System.out.println(e);
    } finally {
      System.out.println("処理を終了します");
    }
  }
}

finallyという文が追加されました。
finallyは「必ず処理される文」です。

try文で例外が発生するとcatch文に移行するのは先程解説いたしました。
catch文で処理されたあと、プログラムは強制終了となるため
後片付けの処理ができなくなります。

この時に使用するのがfinally文です。
finally文は必ず処理される内容を記述します。
必ず処理されるので
 ・try文がうまく行った場合
 ・try文で例外が発生した場合
の二段階の対応が可能になります。


今回は例外処理についてまとめてみました。
 ・例外とは「プログラム実行中に想定外の事態が発生した状況のこと」
 ・例外を処理する文法は「try-catch」文
 ・必ず処理させたい内容は「finally」文に記述

次回は例外処理の具体的な内容をまとめたいと思います!
今回も最後まで読んでいただきありがとうございました!