1

特定の例外をキャッチするにはどうすればよいですか?たとえば、JavaEEプロジェクトでSQLException発生する可能性があります。キャッチする目的で私たちは書く

catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   

しかし、それは次のようなさまざまな理由で発生する可能性があります

ORA-00001:一意性制約(SYSTEM.PK_USERID)に違反しました

また

リスナーは次のエラーで接続を拒否しました:ORA-12505、TNS:listenerは現在接続記述子で指定されたSIDを認識していませんクライアントによって使用された接続記述子はlocalhost:1521:XEでした。

では、どの例外が発生しているかを具体的に把握したい場合、コードにどのように実装できますか?コードスニペットは非常に役立ちます!!

4

4 に答える 4

2

について話している場合は、 Javadocjava.sql.SQLExceptionを確認してください。個別にキャッチできる例外のサブクラスがたくさんあります(これらのサブクラスのサブクラスも同様です)。さらに、フレームワークを使用している場合は、フレームワークが独自のサブクラスをさらに提供する可能性があります。これはIDE内で簡単に確認できます。Eclipseでは、タイプ階層ビューと呼ばれます。SQLException

于 2012-08-01T17:14:01.227 に答える
1

結果がどうなるかによって、例外への対応が異なるように思われますe.getMessage()。そのために、catchブロック内の一連のifステートメントをアドバイスします。ほぼ確実に例外をキャッチしたいので(キャッチされない例外は問題になるため)、例外であるという事実以外に基づいてキャッチするかどうかを決定する必要はありません。

編集:特定の例外をスローする独自のメソッドである場合は、SQLExceptionをサブクラス化して、元のクラスのさまざまなバリエーションを示し、それらを個別にキャッチできます。

于 2012-08-01T17:11:12.187 に答える
1

キャッチし、それがメッセージであるかどうかを確認し、そうでない場合は再スローします。

于 2012-08-01T17:11:42.930 に答える
0

あなたが与えたのは、のさまざまなメッセージです。SQLException. それらを異なる方法で処理する必要がある場合は、ifステートメントまたはswitchステートメントのいずれかを使用する必要があります。e.getMessage()

于 2012-08-01T17:13:25.490 に答える