【发布时间】:2015-03-05 08:48:06
【问题描述】:
我想捕捉 SQL 异常并区分主键违规和唯一键违规。这两种类型的异常返回相同的ErrorCode 2627。
try
{
}
catch (SqlException ex)
{
if (ex.Number == 2627)
{
throw new UniqueOrDuplicateKeyException("Unique key or Primary key duplication")
}
}
很好,但我想抛出 UniqueKeyException 或 PrimaryKeyException。我知道识别要抛出哪个异常的可能性,但它正在解析以“违反 UNIQUE KEY 约束”或“违反 PRIMART KEY 约束”开头的错误消息。当然,我想避免这个选项。
另一种可能性是直接在我的存储过程中进行,但我有很多存储过程,到处添加它会很烦人。
您知道如何以优雅的方式处理此问题吗?
【问题讨论】: