如何在ASP.NET中捕获特定的数据库错误

时间:2010-01-29 11:03:57

标签: .net asp.net sql-server-2005 exception-handling

在我的SP(Sql Server 2005)中,我使用

引发错误
Raiserror ('No Records Fetched' , 16 ,1)

我想在ASP.NET中捕获这个特殊错误..我该怎么做?

2 个答案:

答案 0 :(得分:1)

应该这样做:

catch(SqlException ex) {
    if(ex.Errors.Count > 0 && ex.Errors[0].Message == "No Records Fetched" && ex.Errors[0].Class == 16) {
        // your error
    }
}

但是,错误集合还可能包含低严重性print语句消息和先前语句中的其他垃圾。您是否想要编写更复杂的过滤代码来消除它们取决于您。

答案 1 :(得分:0)

虽然Christian Hayter的答案是正确的,但另一种方法是使用sp_addmessage来创建您自己的客户错误编号,该编号与此问题具体相关。这将节省您必须解析错误消息。