0
いくつかのフィールドで一意の制約を持つ単純な登録があり、.jsp
ページのフレンドリなメッセージで一意の例外を処理したいが、どの例外をキャッチブロックに含めるべきかわからない。私は重複したフィールドを持つユーザーを登録しようとすると私のコンソールに乗る:Hibernateユニーク制約例外キャッチ
Dec 13, 2017 12:35:10 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper
logExceptions
WARN: SQL Error: 1062, SQLState: 23000
Dec 13, 2017 12:35:10 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper
logExceptions
ERROR: Duplicate entry 'admin1' for key 'username'
Dec 13, 2017 12:43:37 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper
logExceptions
WARN: SQL Error: 1062, SQLState: 23000
Dec 13, 2017 12:43:37 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper
logExceptions
ERROR: Duplicate entry 'edek' for key 'PRIMARY'
取扱い:あなたがテーブル内の1つのプライマリキーを持っている場合は、例外ブロックでエラーコードを
try
{
userService.registerUser(userAccount);
}
catch(?)
{
// something like :
return new ModelAndView("register","uniqueErrorMessage",message);
}
あなたは 'Exception'自体をキャッチしようとしましたか? – kakurala
さて、それはうまくいきますが、明確なメッセージを表示するために、どのフィールドが一意の制約を破るかを区別したいと思います。また、一意の制約に接続されていない他のSQLExceptionが発生した場合、これは誤解を招きます。 –