В моем SP (Sql Server 2005) я поднимаю ошибку, используя
Raiserror ('No Records Fetched' , 16 ,1)
Я хочу поймать эту конкретную ошибку в ASP.NET .. как мне это сделать?
Это должно сделать это:
catch(SqlException ex) { if(ex.Errors.Count > 0 && ex.Errors[0].Message == "No Records Fetched" && ex.Errors[0].Class == 16) { // your error } }
Однако коллекция ошибок также может содержать сообщения оператора print низкой серьезности и другие нежелательные сообщения из предыдущих операторов. Вам решать, хотите ли вы написать более сложный код фильтрации, чтобы устранить их.
print
Хотя ответ Кристиана Хейтера верен, альтернативой может быть использование sp_addmessage для создания собственного номера ошибки клиента, который имеет отношение именно к этой проблеме. Это избавит вас от необходимости разбирать сообщение об ошибке.