Tengo unos 3-4 procedimientos almacenados, que puedo modificar si es necesario, que usan RAISERROR
para informar a mi aplicación de algunos errores fatales en el lado de la base de datos. Algunos de estos procedimientos almacenados se ejecutan desde el lado C# con ExecuteNonQuery
, mientras que otros se ejecutan con ExecuteReader
. Por el momento, estoy envolviendo estos comandos en un bloque try { ... } catch (SqlException ThisSqlException) { ... }
, pero el problema es que esta excepción se lanzará en al menos dos escenarios que debo tratar por separado:RAISERROR-¿Cómo distinguir con SqlException?
1) Errores con la conexión en sí, o con fallas o parámetros de tipo no coincidente; y
2) Errores que ocurren cada vez que uso RAISERROR
explícitamente.
Dado que se trata de una aplicación WCF, debo devolver a la aplicación cliente diferentes comentarios en función de la naturaleza de la excepción (ya sea debido a un comando RAISERROR
o no). ¿Cómo puedo, entonces, distinguir entre ambas situaciones?
+1. Creo que esa es la forma en que voy a usar. – User
puede especificar un número personalizado para que msg_id reconozca sus propios errores específicos, pero el número debe registrarse primero en la tabla sys.messages de la base de datos y debe ser> 50000. Consulte http://msdn.microsoft.com/en -us/library/ms178592.aspx – stombeur