2

私の Swing アプリケーションは例外をほとんどスローしません。Integrity Constraint Violation Exception をキャッチして、「Duplicate ID」というメッセージを表示しようとしました。しかし、それが起こった場合、ここでそれをキャッチせずに: catch(MySQLIntegrityConstraintViolationException ex) それは catch (SQLException ex) に行きます。私がやりたいことは、完全性違反の例外をキャッチし、ex.getMessage() からの技術的なメッセージの代わりにユーザーフレンドリーなメッセージを表示することです。どうすればいいですか?

              ShippmentTransfer shipTrns = new ShippmentTransfer(shipID, GIN, issueDate, ToStore, itemName, Qty, Driver, Vehicle);
                    int res = ShipmentTansController.addShipGIN(shipTrns);
                    if (res > 0) {
                          JOptionPane.showMessageDialog(null, "Record Added");
                          resetAll();
                    }
              } catch (DataIntegrityViolationException ex) {
                    JOptionPane.showMessageDialog(null, "Duplicate ID");

              } catch (ClassNotFoundException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
              } 
              catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, ex.gets);
              }
        }
4

3 に答える 3

1

あなたは使用できません

MySQLIntegrityConstraintViolationException  directly.

その名前のJavaでは例外が利用できないためです。

これを試して

try {

}
catch (DataIntegrityViolationException ex) {
    .....
}

ex.を使用してエラーコードを取得し、それを比較します

于 2013-04-09T06:15:29.900 に答える
1

後でチェックする場合は、インスタンス タイプを次のようにチェックすることを選択できます。

try {
...
} catch (Exception e) {

    if (e instanceof SQLIntegrityConstraintViolationException) {
          // duplicate record or alike problem
    }
}
于 2013-06-29T18:33:42.373 に答える