嵌套 Try/Catches - 仅外部捕获很重要 (MS SQL)

Nested Try/Catches - Does Only Outer Catch Matter (MS SQL)

我认为支持嵌套 TRY/CATCH。但是,似乎当使用嵌套 try/catch 时,最外层的 CATCH 是进行捕获的那个。

在下面的例子中,打印的是:

尝试 1 尝试 2 抓住 1

不应该打印 CATCH 2 吗?我希望 CATCH 2 是 运行 而 CATCH 1 永远不会被击中。

CREATE PROCEDURE TEST__Main AS
BEGIN
  BEGIN TRY 
    PRINT 'TRY 1'
    EXEC TEST__Main_1;
    PRINT 'END 1'
  END TRY
  BEGIN CATCH
    PRINT 'CATCH 1'
  END CATCH 
END
GO

CREATE PROCEDURE TEST__Main_1 AS
BEGIN
  BEGIN TRY 
    PRINT 'TRY 2'
        SELECT * FROM table_doesnt_exist;
    PRINT 'END 2'
  END TRY
  BEGIN CATCH
    PRINT 'CATCH 2'
  END CATCH 
END
GO

EXEC TEST__Main;

答案在@GarethD 的评论中。在这里添加作为答案,以便下一个受害者可以找到它。我在搜索时没有遇到这个问题。

SQL: Try/Catch doesn't catch an error when attempting to access a table that it can't find

GarethD,如果你post回答了,我会把它标记为答案。