3 回答
TA贡献1878条经验 获得超4个赞
有点像 请参阅数据库引擎错误的原因和解决方案
class SqllErrorNumbers
{
public const int BadObject = 208;
public const int DupKey = 2627;
}
try
{
...
}
catch(SqlException sex)
{
foreach(SqlErrorCode err in sex.Errors)
{
switch (err.Number)
{
case SqlErrorNumber.BadObject:...
case SqllErrorNumbers.DupKey: ...
}
}
}
但问题是,我们会TRY/CATCH 在 T-SQL(存储过程)内部建立一个良好的DAL层,并使用类似异常处理和嵌套事务的模式。遗憾的是,T-SQL TRY/CATCH块无法引发原始错误代码,而必须引发新错误,且代码大于50000。这使客户端处理问题。在下一版本的SQL Server中,有一个新的THROW构造,该构造允许重新引发T-SQL catch块中的原始异常。
TA贡献1773条经验 获得超3个赞
最好使用错误代码,而不必解析。
try
{
}
catch (SqlException exception)
{
if (exception.Number == 208)
{
}
else
throw;
}
如何确定应使用208:
select message_id
from sys.messages
where text like 'Invalid object name%'
- 3 回答
- 0 关注
- 1007 浏览
添加回答
举报