0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

例外処理

Posted at

今回はJavaの例外処理について記事にしたいと思います。

例外とは、プログラムが予想外の問題に遭遇したときに発生するエラーのことです。たとえば、次のような状況が考えられます:

数字を入力する場面で、文字を入力してしまった。
ファイルを読み込もうとしたけど、そのファイルが存在しなかった。
0で割ろうとした(これは数学的に禁止されています)。
こうした状況が起きたとき、プログラムは通常止まってしまいますが、例外処理を使うことで、エラーに対処しながらプログラムを続けることができます。

  1. 例外処理(try ~ catch)
    Javaでは、エラーが発生する可能性がある部分に対して、tryブロックとcatchブロックを使って、エラーが起きたときにどう対処するかを指定します。

tryブロックには、エラーが起こるかもしれない処理を書きます。
catchブロックには、エラーが起きたときにどうするかを書きます。

コードをコピーする
try {
    int result = 10 / 0;  // ここでエラーが発生
} catch (ArithmeticException e) {
    System.out.println("エラー:0で割ることはできません");
}

このように、エラー(例外)に備えて事前に対処法を決めておくことができます。

  1. 例外の継承関係
    継承は、プログラムのクラスが他のクラスの特性を受け継ぐことです。例外もクラスとして定義されており、例外の種類ごとにクラスがあります。たとえば、次のような継承関係があります:

Exceptionクラスが全ての例外の親クラスです。
ArithmeticException(数学的なエラー)
IOException(ファイル入出力エラー)
これによって、複数の種類のエラーをまとめて処理することができるのです。

  1. 非チェック例外
    非チェック例外は、コンパイル時にはチェックされない例外のことです。つまり、プログラムを書く段階では注意を払わず、実行して初めてエラーに気づくものです。

例:ArithmeticExceptionやNullPointerExceptionなどは非チェック例外で、プログラムを書いている段階でチェックされません。
例:

int a = 0;
int result = 10 / a;  // ここで実行時に例外が発生(非チェック例外)
  1. 例外を投げる
    Javaでは、プログラムの中で自分で意図的に例外を発生(投げる)させることができます。これを例外を投げる(throwする)と言います。
if (age < 0) {
    throw new IllegalArgumentException("年齢は0以上でなければなりません");
}

この例では、年齢がマイナスになっている場合に、プログラムの中で例外を意図的に投げています。これにより、間違った入力があったときに適切にエラーを処理することができます。

まとめ
例外とは:プログラムがエラーに遭遇したときに発生する問題。
例外処理(try ~ catch):エラーが起きてもプログラムが止まらないように対処する仕組み。
例外の継承関係:例外もクラスとして定義され、親子関係がある。親クラスを使って、複数の種類の例外をまとめて処理できる。
非チェック例外:コンパイル時にチェックされない例外。プログラム実行中に発生する。
例外を投げる:自分で意図的にエラーを発生させることで、プログラムの流れをコントロールする。

今回は例外について記事にしてみました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?