在向用户报告之前检测SQLException原因的惯用方法

时间:2014-05-25 17:31:36

标签: java sql database jdbc playframework

我正在编写一个数据库支持的Web服务器,我想知道实现以下内容的最佳实践/惯用方法:

因此,当用户创建帐户时,服务器需要确保尚未使用用户名。数据库中的用户名字段被定义为唯一键。因此,我不是做一个检查用户名存在然后添加它的两步过程,而是希望我可以利用DBMS。我的意思是,只需添加记录并相信将抛出SQLException。

我的问题是如何找到异常的原因。因为我当然不能将exception.getMessage()返回给用户,但是我需要一种方法来识别它是否是由于导致错误的唯一键字段中的重复(因此让用户知道)而不是另一种类型的JDBC可能抛出的问题(应该记录其他问题)。

我可以尝试解析e.getMessage(),但我希望有更完整的证明方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

最佳实践是捕获sqlexception,处理它(取决于您的数据库提供程序异常代码)以转换为新的Exception,如UserAlreadyExistException将其抛出到表示层。最后在表示层中捕获它并发出用户友好的消息。