3 回答

TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊
有點像 請參閱數(shù)據(jù)庫引擎錯誤的原因和解決方案
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(存儲過程)內(nèi)部建立一個良好的DAL層,并使用類似異常處理和嵌套事務(wù)的模式。遺憾的是,T-SQL TRY/CATCH塊無法引發(fā)原始錯誤代碼,而必須引發(fā)新錯誤,且代碼大于50000。這使客戶端處理問題。在下一版本的SQL Server中,有一個新的THROW構(gòu)造,該構(gòu)造允許重新引發(fā)T-SQL catch塊中的原始異常。

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊
最好使用錯誤代碼,而不必解析。
try
{
}
catch (SqlException exception)
{
if (exception.Number == 208)
{
}
else
throw;
}
如何確定應(yīng)使用208:
select message_id
from sys.messages
where text like 'Invalid object name%'
- 3 回答
- 0 關(guān)注
- 1025 瀏覽
添加回答
舉報