пятница, 15 марта 2013 г.

Как после обработке исключительной ситуации в TRY-CATCH передать исключительную ситуацию дальше для обработки

 RAISERROR 

 THROW



    BEGIN TRY
       DECLARE @MyInt int
       SET @MyInt = 1 / 0
    END TRY
    BEGIN CATCH
       DECLARE @ErrorMessage nvarchar(4000), @ErrorSeverity int
       SELECT @ErrorMessage = ERROR_MESSAGE(),
       @ErrorSeverity = ERROR_SEVERITY()
       RAISERROR (@ErrorMessage, @ErrorSeverity, 1)
    END CATCH
--Ошибка теперь пользовательская (50000)

GO


    BEGIN TRY
       DECLARE @MyInt int
       SET @MyInt = 1/0
    END TRY
       BEGIN CATCH
       -- throw out the error
    ;THROW;
    END CATCH
--Ошибка осталась системной 8134