1

以下のコードが機能しないのはなぜですか? 一方、すべてのクラスは Object クラスから拡張されています。

try {
// simple code , throw some exception
} catch (Object e) { 
// handle the exception
}

例外クラスがオブジェクト クラスから継承されている場合、なぜ Object 参照が catch ブロックで許可されないのですか?

上記の質問の答えを知っている人がいたら教えてください。

4

4 に答える 4

11

catch 句への引数は、から継承する必要があります。Throwable

この制約は最初から Java 言語に組み込まれており、JRE ライターが作業を高速化するのに役立つ場合に活用できるという約束の一部です。

于 2013-06-08T17:13:02.820 に答える
7

javadoc から:

Throwableクラスは、Java 言語のすべてのエラーと例外のスーパークラスです。このクラス (またはそのサブクラスの 1 つ) のインスタンスであるオブジェクトのみが、Java 仮想マシンによってスローされるか、Java の throw ステートメントによってスローされる可能性があります。同様に、このクラスまたはそのサブクラスの 1 つだけが catch 句の引数の型になることができます。コンパイル時の例外チェックのために、Throwable と、RuntimeException または Error のサブクラスではない Throwable のサブクラスは、チェック済み例外と見なされます。

詳細はこちら: http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html

于 2013-06-08T17:16:03.140 に答える
0

あなたはプログラミングが初めてのようです。とにかく、オブジェクトはJavaクラス階層のルートであり、その階層から、関連する問題がある場合にスローまたはスローされるために使用される子孫のスロー可能な階層が定義されます

基本的に学ぶ必要があるのはエラーだけで、例外は catch ブロックで使用できます。これは、問題の原因となったオブジェクトではなく、発生した問題を追跡するためです。

したがって、ArrayOutOfBoundsException (Exception から派生した & Exception は Throwable から派生した) を取得した場合、これは配列オブジェクトがこの Exception の理由であり、より良い例外処理には特定の問題のキャッチが含まれることを意味します。

私はあなたを助けたと思いますが、それが本当に役に立った場合は、私の答えを受け入れられると思います。

于 2013-06-08T17:30:40.900 に答える