1

私はJAVAが初めてで、OCP JP認定の準備をしています。

私は例外処理に関してこの疑問を持っています

try{
        assert(false):"HI";
    }
catch(Throwable e){}

私は assert を処理すべきではないことを知っていますが、これを例として使用しています。私が知っていることから、オブジェクト->スロー可能->例外とエラー

catch ブロックに Throwable または Exception または Error がある場合は機能しますが、すべてのスーパークラスであるオブジェクトがある場合、Eclipse はコンパイル時エラーを表示します。

オブジェクトを catch ブロックに入れることができない理由は何ですか?

4

6 に答える 6

5

Java では、 タイプのオブジェクトのみをThrowableスローまたはキャッチできます (これには および が含まExceptionErrorます)。

throw new Object(); // compiler error
throw new Integer(1); // compiler error

したがって、 s しかスローできないObjectため、 old をキャッチしても意味がありません。Throwable

JLS のセクション 14.20からの引用:

例外パラメーターの型の表記に使用される各クラス型は、Throwable クラスまたは Throwable のサブクラスでなければなりません。そうしないと、コンパイル時エラーが発生します。

于 2013-08-29T19:31:36.837 に答える
0

Throwable またはそのすべてのサブクラスのみを使用できます

于 2013-08-29T19:33:39.957 に答える
0

なぜなら、それは投げられることを期待しているからです。例外クラスまたはエラー クラスは、Throwable のサブクラスであるため、throwable 型です。ただし、Object クラスは Throwable インターフェースのサブクラスではありません。

そして重要なのは、オブジェクトを投げることができないことです。エラーまたは例外のいずれかをスローできます。

于 2013-08-29T19:38:31.423 に答える
0

JLS 14.20による。try ステートメント

例外パラメーターの型の表記に使用される各クラス型は、Throwable クラスまたは Throwable のサブクラスでなければなりません。そうしないと、コンパイル時エラーが発生します。

于 2013-08-29T19:35:45.513 に答える