1

すべての未チェックの例外が処理されるまでコードがコンパイルされないように、開発者ユーザーがコード内のすべての未チェックの例外を処理する方法はありますか? ユーザーに次のような例外を強制的に処理させたい

iterator.next()
4

5 に答える 5

5

いいえ、できません。通常、ユーザーにチェックされていない例外を強制的に処理させたい場合は、手動でそれらをキャッチし、チェックされた例外でラップします

例えば

Integer a;
try {
    a = 1;
}
catch (NullPointerException e) {
     throw new Exception(e);
}

a が null の場合、NPE がスローされます。次に、チェックされた でラップされますException。(例外はおそらくここでは一般的すぎるため、独自のチェック済み例外クラスを作成する必要がある場合があります)

このパターンの問題点は、チェックされていない例外が存在する可能性がある場所をあらゆる場所でチェックする必要があることです。これらはメソッド シグネチャの一部として宣言されていないため、API を介してトロールすることを意味する場合があります。

または、さらに汚れていて、をキャッチする try/catch ブロックがたくさんある可能性がありますException。Exception は RuntimeException のスーパークラスであるため、チェックされていない例外をキャッチします。

あなたがやりたいことが正しいアプローチであるかどうかはわかりません。未チェックの例外は通常、プログラマーのエラーであるため、キャッチされることを意図しています。それらは通常、コードのバグです。(そして、ググることができるチェックされていない/チェックされた例外のポイントについては大規模な議論があります)

于 2012-09-26T08:51:29.683 に答える
1

いいえ、できません。シャットダウンフックを使用するのが最善のチャンスです

于 2012-09-26T09:41:25.463 に答える
1

いいえ、チェックされていない例外の目的ではないチェックされていない例外を処理するようにユーザーに強制することはできません。強制処理には、チェック例外があります。ただし、プログラム内のすべての例外を処理するようにユーザーに依頼できます。

于 2012-09-26T08:54:13.613 に答える
0

いいえ、ユーザーにそれを強制することはできませんが、非常にうまく尋ねることができます...

于 2012-09-26T08:49:41.223 に答える
0

いいえ。

そして、コンパイラはどのようにしてそれを行うのでしょうか? これらの例外はチェックされていないため、(ほとんどの場合) メソッド シグネチャで宣言されていません。

于 2012-09-26T08:51:10.263 に答える