TRY ... CATCH в таблицу ошибок и журнал ошибок - PullRequest
1 голос
/ 27 февраля 2010

У меня проблема с блоками TRY ... CATCH. Может кто-нибудь объяснить, почему следующий код не будет выполнять мой sp?

DECLARE @Result int
SET @Result = 0
BEGIN TRY
    SELECT * FROM TableNoExist
END TRY
BEGIN CATCH
    SET @Result = ERROR_NUMBER()
END CATCH
EXEC dbo.spSecurityEventAdd @pSecurityEventTypeID = 11, @pResult = @Result

Но этот код работает:

DECLARE @Result int
SET @Result = 0
BEGIN TRY
    SELECT 1/0
END TRY
BEGIN CATCH
    SET @Result = ERROR_NUMBER()
END CATCH
EXEC dbo.spSecurityEventAdd @pSecurityEventTypeID = 11, @pResult = @Result

Я бы хотел убедиться, что уловил все ошибки. Спасибо

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

Ошибки компиляции и перекомпиляции на уровне операторов

Существует два типа ошибок, которые не будут обрабатываться TRY… CATCH, если ошибка происходит на том же уровне выполнения, что и конструкция TRY… CATCH:

Ошибки компиляции, такие как синтаксические ошибки, которые мешают выполнению пакета.

Ошибки, возникающие при перекомпиляции на уровне операторов, например ошибки разрешения имен объектов, возникающие после компиляции из-за отложенного разрешения имен.

http://msdn.microsoft.com/en-us/library/ms179296.aspx

1 голос
/ 27 февраля 2010

Похоже, что тема отвечает на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...