0

私は小さなデータベースプログラムをやっています。

Connection connection = DriverManager.getConnection(..., ..., ...);

String createTable= "CREATE TABLE Employee ...";

try
{
    Statement stmt = connection.createStatement ();
    stmt.executeUpdate(createTable);
    stmt.close();
    connection.close ();
}
catch(Exception Ex)
{
    System.out.println("Erreur : " + Ex.toString());
}  

プログラムを実行すると、すべて問題なく実行されますが、2 回目にはこの Exception が発生します。

重複するテーブル名: 従業員

例外を管理する方法はわかっていますが、考えられるすべての例外を管理するにはどうすればよいですか。お気に入り :

IF例外は重複エラーでありTHEN、カスタムの重複メッセージが表示されます。

IF主キーが重複しているTHENと、別のエラー メッセージが表示されます。

ありがとう。

4

4 に答える 4

4

特定の例外を処理する場合は、複数の catch ステートメントが必要です。

try {
    // some code that may throw an exception
}
catch (DuplicateKeyException e) {
    // handle a duplicate key exception
}
catch (DuplicateTableException e) {
    // handle a duplicate table exception - note this probably isn't the correct exception, you'll need to look up what is actually thrown
}
catch (Exception e) {
    // handle all other exceptions in a non-specific way
}
于 2011-07-01T10:34:17.607 に答える
2

実際の SQL 例外の「サブタイプ」を取得するには、例外メソッド文字列を解析する必要があります。

 try {
   // ...
 } catch (SQLException e) {
  if (e.getMessage().toLowerString().contains("duplicate table name")) {
   // handle duplicate table name problem
  } else if ( /* ... */ ) {
   // ...
  }
 }
于 2011-07-01T10:35:03.470 に答える
0

また、SQLException のエラー コードに応じて特定の動作を定義することで、SQL 例外に適したエラー処理を並べ替えることができます。ただし、注意してください。エラー コードは実装固有のものです。つまり、たとえば JavaDB の 1 つのエラー コードは、別の dbms からのものである場合、同じ意味を持ちません。

JAVA API の SQLException.getErrorCode() を参照してください。

于 2011-07-01T11:22:27.683 に答える
0

Spring JDBC ライブラリを使用すると、いくつかの例外変換が行われるためDuplicateKeyExceptionTypeMismatchDataAccessException、 などの (未チェックの) 例外が発生し、個別にキャッチできます。

于 2011-07-01T11:07:15.090 に答える