30

リストが空の場合にスローする例外について、次の疑問があります

public class XYZ implements Runnable {
    private List<File> contractFileList;

    @Override
    public void run() { 
        contractFileList = some method that will return the list;
        //now i want to check if returned contractFile is empty or not , if yes then raise the exception
        if (contractFileList.isEmpty()) {
            // throw new ?????
        }
    }
}

このコードをバッチ内で実行しています。バッチの実行を停止する例外をスローしたいと考えています。

4

5 に答える 5

39

それは私には似IllegalStateExceptionています。

メソッドが違法または不適切な時間に呼び出されたことを通知します。

基本的に、オブジェクトは呼び出されるのに有効な状態ではありませんrun

他の場所で意図的にキャッチされることを期待しない限り、これについて独自の例外を作成することはありません。これは、予期しない状況ではなく、プログラミングエラーが原因でのみ発生するようです...この場合、チェックされていない例外が適切でありIllegalStateException、問​​題の一般的な性質を非常に明確に説明します。

例外のメッセージ内に詳細な原因を入れることができます(「違法な状態」はリストが空であったことを説明します)。

うまくいかない可能性のある小さなことごとに個別の例外タイプを作成しないようにすることをお勧めします。これらの例外を個別にキャッチしない限り、異なるタイプを使用しても役に立ちません。それは混乱を増すだけです。正しい幅広いタイプであるが有用なメッセージを持っている例外は、認知的オーバーヘッドをあまりかけずに同じくらい多くの利益を提供します。

とにかく実装している場合は、チェックされた例外をスローするように宣言されていないため、チェックされた例外を使用できないことに注意してください。Runnable.runチェックされていない例外(たとえば)でラップする必要がありRuntimeExceptionます。その時点では、メリットはさらに少なくなります。

于 2012-06-26T05:55:20.703 に答える
6

サブクラス化して独自の例外Exceptionを作成し、わかりやすい名前を付けます。

public class MyEmptyListException extends Exception {
    public MyEmptyListException(String message) {
        super(message);
    }
}
于 2012-06-26T05:52:54.580 に答える
3

カスタム例外クラスを作成する場合は、これらの点を念頭に置いておく必要があります。

  • アプリケーション全体で例外を処理する一貫した方法があることを確認してください。
  • 新しいカスタム例外は、例外から回復する方法について、メソッドを使用している開発者により多くの情報を提供しますか?

例外処理を理解するのに役立つと思ったリンクをいくつか見つけてください。

  1. 例外処理のベストプラクティス
  2. Javaは例外をチェックする必要がありますか
  3. 未チェックの例外
于 2012-06-26T06:41:04.847 に答える
3

私はIllegalArgumentException. Javadocが説明しているように、「メソッドに不正または不適切な引数が渡されたことを示すためにスローされます」。

于 2015-04-25T19:28:11.877 に答える
0

を投げるべきUser defined Exceptionです。

独自の例外クラスを作成してからスローする必要があります。

于 2012-06-26T05:54:16.837 に答える