理由がわかりません... 2 つの例外がスローされましたが、それらをキャッチできません。
libには、2種類の例外をスローするこのコードがあります。
try {
statement = con.prepareStatement(query);
if (statement.executeUpdate() != 1) {
throw new InvalidIndexException("Record not found or not modified", query);
}
} catch (SQLException e) {
throw new DatabaseIOException(e, "", "SQL Error", logQuery);
}
クエリは、SQL エラーをトリガーするように変更されます。それが発生すると、ログエントリが 1 つあります。
2013-04-26 12:19:39 class database.DatabaseIOException
userManagement.Login.setActivationFlag(Login.java:473)
-> SQL Error
[QUERY]: UPDATE login SET activationprTTTTocess='false' WHERE id=235423432
[MSG]: ERROR: column "activationprttttocess" of relation "login" does not exis
だから私は sqlerror がキャプチャされ、DatabaseIOExceptionとして再スローされたと確信しています.Netbeansでもデバッグモードでコードを実行しました。今のところ大丈夫です。
これで、ユーザーをアクティブ化しようとするサーブレットができました。
try{
Login.setActivationFlag(235423432, false);
} catch (DatabaseIOException db) {
Log.addItem(db.getMessage());
} catch (InvalidIndexException ed){
Log.addItem(ed.getMessage());
}
私が試してみたところ、キャッチブロックに入る方法はありません。Login.setActivationFlag行が実行されると、エラーがログに表示されますが (上記のように)、catch ブロックは何も追加されていないかのようにスキップされます。
この奇妙な動作の理由がわかりません。私はこれらの例外を3年間問題なく使用しています...このコードには、私には見えない何か本当にばかげたものがあるはずです....