我的代码可能遇到许多不同约束的“约束违例异常”(CVE)。为了向用户显示有意义的消息并采取特定操作,我正在解析String
返回的getMessage()
。它有效,但很丑,肯定不容易维护。
我想知道是否有更好的方法?这必须是一个非常常见的场景;是否有我可以遵循的模式或最佳实践?
谢谢。
答案 0 :(得分:2)
AFAIK,因为你对哪个特定约束失败感兴趣,无论你做什么都是唯一的方法。
我不确定您正在谈论哪个数据库,但您可以尝试.. SQLException.getErrorCode()
和SQLException.getSQLState()
。这些将根据数据库供应商提供更多信息。
例如,在Oracle中,SQLException.getErrorCode()
只会告诉您违反了约束,而不一定是哪种约束。