3

私がJavaで理解している限り、例外をスローする関数は、その上の関数でのtryandcatchまたは減速なしにコンパイルするべきではありません。では、なぜこのコードは正当であり、つぶしてはいけないのでしょうか。

public static void main(String[] args) {
    Integer.parseInt("33");
}

Integer.parseInt()がスローされても:NumberFormatException-文字列に解析可能な整数が含まれていない場合。

4

8 に答える 8

14

NumberFormatExceptionextendsRuntimeExceptionは、キャッチする必要のないチェックされていない例外です。

ここに画像の説明を入力してください

Javaチュートリアルからの抜粋

Javaプログラミング言語では、チェックされていない例外(RuntimeException、Error、およびそれらのサブクラス)をキャッチまたは指定するメソッドが必要ないため、プログラマーは、チェックされていない例外のみをスローするコードを記述したり、すべての例外サブクラスをRuntimeExceptionから継承したりする誘惑に駆られる可能性があります。これらのショートカットはどちらも、プログラマーがコンパイラエラーを気にせずに、また例外を指定したりキャッチしたりすることなくコードを記述できるようにします。 記事全文

NumberFormatException Api Docs

于 2013-01-10T10:38:09.663 に答える
2

Java言語仕様から:

未チェックの例外クラスは、実行時例外クラスとエラー クラスです。

つまり、RuntimeExceptionまたはサブクラスであるすべての Throwable と、またはサブクラスであるすべての Throwable Error。それらはキャッチできますが、キャッチするかthrows、必須ではありません。

チェックされた例外クラスは、チェックされていない例外クラス以外のすべての例外クラスです。つまり、チェックされる例外クラスは、RuntimeException とそのサブクラスおよび Error とそのサブクラスを除くすべての Throwable のサブクラスです。

言い換えれば、すべてのThrowable. 投げる ( throws) かキャッチする必要があります。

NumberFormatException 拡張RuntimeExceptionされているため、これは未チェックの例外クラスの 1 つであり、メソッドでキャッチまたはスローする必要はありません。

于 2013-01-10T10:48:02.813 に答える
1

NumberFormatExceptionのサブタイプであるため、いわゆる未チェックの例外ですRuntimeException

Javaでは、チェックされていない例外もtry-catchなしでコンパイルされます

于 2013-01-10T10:38:50.777 に答える
0

NumberFormatExceptionRuntimeExceptionチェックされていないため、キャッチする必要はありません。

Exceptionチェックされている/チェックされていないことがわからない場合は、[ドキュメント]を確認してください2

于 2013-01-10T10:39:14.397 に答える
0

私がJavaで理解している限り、例外をスローする関数はtry and catchなしでコンパイルすべきではありません

に変更exceptionするだけChecked exceptionです。

これらについて明確なアイデアを得るには、次の手順を実行します。

有効な Java 例外

例外

于 2013-01-10T10:39:47.900 に答える
0

NumberFormatException は RuntimeException です。RuntimeExceptions は未チェックの例外です。あなたの言うことは、チェックされた例外には必須ですが、チェックされていない例外には必須ではありません。

リンクのカップル:
http://www.javapractices.com/topic/TopicAction.do?Id=129
http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

于 2013-01-10T10:39:51.007 に答える
0

Java の例外には、チェック例外と非チェック例外の 2 種類があります。

チェック例外は、try-catchブロックまたは宣言が必要なものです。

非チェック例外はそれを必要としません。NumberFormatException未チェックの例外です。

基本的に、チェックされていない Exception は から派生しているRuntimeExceptionため、宣言やtry-catchブロックは必要ありません。

于 2013-01-10T10:39:53.563 に答える
0

クラス RuntimeException とそのサブクラスは、未チェックの例外クラスです。これらの例外は、コードのどこでも発生する可能性があります。そのため、その例外をキャッチして実行を続行するのはあなた次第です。

于 2013-01-10T10:40:21.247 に答える