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?

【Java・初心者向け】例外処理あれこれ -チェック例外・非チェック例外とは?/ややこしいthrowsとthrow-

Last updated at Posted at 2024-12-11

はじめに

この記事は、自分と同じ初心者のJavaエンジニア向けに、例外処理に関する本当に基礎的な知識を記載したものです。
ほぼ自分用のメモ書きですが、誰かの役に立てば幸いです。

チェック例外・非チェック例外とは?

チェック例外

外部要因や予測可能な異常状態に対して発生する例外。
これらはプログラムの修正で対処しにくい問題や、外部システムのエラー(例: ファイル操作、ネットワークエラーなど)に関連することが多い。
開発者に「例外処理を忘れないように」と強制する目的で使用される。

(例) ファイルやネットワークのエラー

メソッド内でtry-catchをしたり、メソッドにthorws宣言をしないとコンパイルエラーになる。
チェック例外が生じる処理を実装する場合は、基本的に以下のどちらかの対策をとる。

①メソッド内でtry-catch文を使い、例外処理を完結させる

public void someMethod(){

    try{
        // チェック例外が生じるメソッドを呼び出す    
        Hoge hoge = exceptionOccurMethod();
    
    }catch(Exception e){
        // 例外が起きたときの処理
    }

}

②(さらに呼び出し元クラスが存在する場合)呼び出し元に例外処理を任せるため、メソッドにthrows宣言をつける

// someMethod()を呼び出したメソッドに例外処理を任せる
public void someMethod() throws Exception{

    // チェック例外が生じるメソッドを呼び出す    
    Hoge hoge = exceptionOccurMethod();

}

チェック例外の例:

IOException(入出力操作に関連するエラー)
SQLException(データベース関連のエラー)

非チェック例外

プログラムの修正で対処可能な問題に対して発生する例外。
主にプログラムのバグや設計ミスを示す目的で使用される。
運用中に非チェック例外が発生した場合、設計や実装にミスがあることが疑われる。

(例)バグ、ロジックミス、想定外の動作など。

非チェック例外の例:

NullPointerException(null 参照のオブジェクトにアクセスしようとした場合)
IllegalArgumentException(不正な引数が渡された場合)

補足

補足1:ややこしいthrowsとthrow

throws
メソッドの宣言のときにつける。
非チェック例外が発生する場合のみ。
「このメソッドは例外処理を呼び出し元に任せますよ~」の意味。
throw
メソッドの中に書く。
例外を発生させる処理。

最初のうちはどっちがどっちか覚えづらいですが、英文法で捉えると当たり前なので覚えやすいです。
throws→メソッドが主語なので三人称のsがつく
throw→単なる処理(例外を発生させる)なので動詞の原形

補足2:非チェック例外をtry-catch

非チェック例外もtry-catchしたり、catchして再スローしたりできる。
※非チェック例外は本来、バグやプログラムミスの修正を促すために使われるため、このような実装は特殊。

public void someMethod() {
    try{
    
     // 非チェック例外が生じる処理
    
    }catch(RuntimeException e ){
        //非チェック例外を再スロー
        throw e;
    }
}

catchして非チェック例外を呼び出し元に再スローした場合も、メソッドにthrows宣言は不要。

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?