Servlet捕获唯一约束异常

Lin*_*vel 2 java oracle servlets exception unique-constraint

我正在尝试将一些数据插入到名为的表中rmas.

表格式是

|rcode|rname|vcode|vanme
Run Code Online (Sandbox Code Playgroud)

在这里,我为rcode设置了主键.

当我用现有的rcode插入记录时,它会显示类似于ORA-0000-1唯一约束违反的内容.

如果我使用以下代码,即使出现其他错误,也会显示该消息.

catch(Exception e)
{
 //out.println("rcode already exists");
}
Run Code Online (Sandbox Code Playgroud)

所以,我想只捕获主键异常并显示为"rcode已存在".可能吗?如果是,那怎么样?

提前致谢

asi*_*d88 6

Exception是所有异常的父级.如果您已catch(Exception e) { }编写块,则所有异常都将属于此类别.您需要找到编译器返回的异常.假设您的编译器返回此异常,SQLIntegrityConstraintViolationException则会出现以下块

catch(SQLIntegrityConstraintViolationException e) 
{
  // Error message for integrity constraint violation
}
catch(NullPointerException e)
{
  // Null Pointer exception occured.
}
catch(Exception e)
{
 // Other error messages
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以拥有任意数量的异常块.但请确保首先编写更具体的异常类型,然后再写出父异常