SQL Server Raiserror not causing exception in .NET client

后端 未结 4 1308
说谎
说谎 2021-01-13 07:19

I have a stored procedure on a SQL Server 2005 database which has a statement like this:

  IF @Condition = 0
    BEGIN
        RAISERROR(\'some error message         


        
相关标签:
4条回答
  • 2021-01-13 07:33

    According to SQL Books online severity of 16 "Indicates general errors that can be corrected by the user." - so that severity is OK.

    I only have SQL 2008 to work with, but I have tested the RAISERROR('some error message',16,1) and the error was caught in my c# app. Are you sure the error is not being handled in your "SqlHelper" class?

    0 讨论(0)
  • 2021-01-13 07:33

    From the Books online

    Specify a severity of 10 or lower to use RAISERROR to return a message from a TRY block without invoking the CATCH block.

    0 讨论(0)
  • 2021-01-13 07:41

    Is it something to do with the severity level? If you up severity to 19 does it raise the exception through to your code?

    0 讨论(0)
  • 2021-01-13 07:57

    I went through the SQL Helper class and found out that ExecuteScalar eats the exception and returns null. I switched to ExecuteDataSet which doesn't do this. I expected the different Execute.. method to behave the same way. The other way is to use ExecuteScalar and when the SP detects an error, it does a SELECT some error number which can be handled in the client.

    0 讨论(0)
提交回复
热议问题