1

C ++では、以下のように例外をスローできない関数を宣言できます。

int myfunction (int param) throw(); // no exceptions allowed

Javaプログラミング言語でそのような宣言をすることはできますか?

4

3 に答える 3

5

いいえ、どのメソッドも常にチェックされていない例外(RuntimeExceptionおよびError)をスローできます。

Exceptionチェックされた例外(から派生しないサブクラスRuntimeException)をメソッド宣言にリストするだけで済みます。

そして醜い補足:コンパイラは宣言されていないチェック例外がスローされていないことをチェックしますが、いくつかの醜いトリックでそれを回避できます(これは卑劣なスローと呼ばれることもありますが、Project Lombokはそれを明示的にサポートしています)。

于 2012-11-08T10:13:43.570 に答える
0

前のレイヤーに例外がまったくスローされないようにする方法があります。すべてのコードをtrycatchステートメントに入れるだけで、メソッドで例外が発生した場合でも、常にキャッチされます。

ただし、例外が前の(呼び出し元の)レイヤーに伝播しないことを保証するだけであり、メソッド本体で例外がまったく発生しないことは確かではありません。

于 2012-11-08T10:16:52.630 に答える
0

いいえ、その意味ではありません。例外をスローしないように関数を宣言することはできますが(単にthrowsキーワードを含めないでください)、関数が例外をスローするのを防ぐことはできません。その関数でゼロ除算があると想像してください。プログラムの動作は未定義になります。

于 2012-11-08T10:14:09.677 に答える