Use*_*ser 9 c# wcf sql-server-2005 sqlexception raiserror
我有3-4个存储过程 - 如果需要我可以修改 - RAISERROR用于通知我的应用程序在数据库端的一些致命错误.其中一些存储过程是从C#端ExecuteNonQuery执行的,而其他存储过程是用ExecuteReader.目前,我将这些命令包装在一个try { ... } catch (SqlException ThisSqlException) { ... }块中,但问题是这个异常将至少抛出两个我必须单独处理的场景:
1)连接本身的错误,或者出现故障或类型不匹配的参数; 和
2)我RAISERROR明确使用时出现的错误.
由于这是一个WCF应用程序,我必须根据异常的性质(无论是否由于RAISERROR命令)返回客户端应用程序的不同反馈.那么,我怎样才能区分这两种情况呢?
Jef*_*dge 14
该RAISERROR命令包含一个msg_id参数,该参数可用于标识错误类型.该值通过SqlException.Number属性提供给应用程序.通过这种方式,您可以识别由存储过程引发的任何异常,该异常包括系统中定义的自定义错误消息.
如果RAISERROR使用文本字符串错误消息调用,Number则将为50000.