我正在捕获 DBUpdateExcdeption。我的目的是检查是否存在唯一验证错误。
我尝试将 InnerExcdeption 转换为 SqlException 但没有成功。
public static bool IsExceptionUniqueConstraintViolation(Exception ex)
{
var sqlException = ex.InnerException as SqlException;
if (sqlException.Number == 2601 || sqlException.Number == 2627)
return true;
return false;
}
出了什么问题?
内部异常很可能不是
SqlException
,因此 as
转换将失败(请参阅 as 操作员文档)。当转换失败时,结果将为空。
当您有嵌套异常时,可能有超过 1 层的嵌套,因此您可能有不止一级的
SqlException
- 如果异常是,您可以假设内部异常将是 SqlException
由库中的代码抛出。