我有一些3-4个存储过程――如果需要,我可以进行修改――这些存储过程使用RAISERROR
来通知我的应用程序数据库端发生了一些致命错误。其中一些存储过程通过ExecuteNonQuery
从C#一侧执行,而另一些则通过ExecuteReader
执行。目前,我正在将这些命令封装在一个try { ... } catch (SqlException ThisSqlException) { ... }
块中,但是问题在于,此异常至少会在两种必须单独处理的情况下被引发:
1)连接本身或参数出现故障或类型不匹配的错误;以及
2)每当我明确使用RAISERROR
时出现的错误。
由于这是一个WCF应用程序,我必须根据异常的性质(是否由RAISERROR
命令引起)向客户端应用程序返回不同的反馈。那么,我该如何区分这两种情况呢?