를 캡처하지 않습니다 나는 다음과 같은 저장 프로 시저 문이 : 나는 루프 동안 예외를 명중 ID의 목록을 얻으려고TSQL : 중첩 된 시도 - 캐치는 내부 캐치에게
DECLARE @CurrentId BIGINT
DECLARE @FailedRecord NVARCHAR(MAX) = ''
BEGIN TRY -- 1st Try
INSERT INTO #tmpNewApp
SELECT Id, Email, Content
FROM dbo.NewApplication
WHILE EXISTS(SELECT * FROM #tmpNewApp)
BEGIN
BEGIN TRY -- 2nd Try
SET @CurrentId = (SELECT TOP 1 Id FROM #tmpNewApp)
INSERT INTO EmailSending
SELECT Email, Content
FROM #tmpNewApp
WHERE Id = @CurrentId
END TRY
BEGIN CATCH -- 2nd Catch
SET @FailedRecord = @FailedRecord + ', ' + @CurrentId;
END CATCH
DELETE FROM #tmpNewApp
WHERE Id = @CurrentId
END
END TRY
BEGIN CATCH -- 1st Catch
INSERT INTO DatabaseException
SELECT ERROR_MESSAGE(), GETDATE()
END CATCH
SELECT @FailedRecord
합니다. 그러나 @FailedRecord
은 항상 공백을 반환하고 항상 CATCH
에 의해 캡처 된 두 번째 CATCH
처럼 보이는 예외를 항상 catch 할 수 있으며 두 번째 CATCH
의 문은 무시됩니다.
왜 이런 일이 발생합니까?