RAISERROR―How to distinguish with SqlException?

Viewed 10115

I have some 3-4 stored procedures ― which I can modify if needed ― that use RAISERROR to inform my application of some fatal errors on the database side. Some of these stored procedures are executed from the C# side with ExecuteNonQuery, while other are executed with ExecuteReader. At the moment, I am wrapping these command in a try { ... } catch (SqlException ThisSqlException) { ... } block, but the problem is that this exception will be thrown in at least two scenarios I must deal with separately:

1) Errors with the connection itself, or with faulted or type-mismatched parameters; and

2) Errors that occur whenever I use RAISERROR explicitly.

Since this is a WCF application, I must return to the client application different feedback based on the nature of the exception (whether it was due to a RAISERROR command or not). How can I, then, distinguish between both situations?

2 Answers
Related