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