1

鉴于以下 SP ...

CREATE PROCEDURE [dbo].[trytest1]

AS

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

SELECT 'Testing 1'

DECLARE @int1 INTEGER
DECLARE @int2 INTEGER
DECLARE @int3 INTEGER

SET @int1 = 0
SET @int2 = 0

    BEGIN TRY
        SELECT 'Testing 2'

        SET @int3 = @int1 / @int2

        SELECT 'Testing 3'
    END TRY

    BEGIN CATCH
        SELECT 'Testing 4'
    END CATCH

SET @int3 = @int1 + @int2
SELECT 'Testing 5'

执行这个给...

测试 1

测试 2

测试 4

测试 5

返回值 -6

catch 捕获除以零,但是在 catch 块之后继续执行 我很好奇为什么即使查询成功执行并在 trycatch 正常之后继续,返回值是-6。它会永远保持-6吗?

而且,虽然我在这里,只是好奇,是否可以在 Try Block 中继续执行(即选择“测试 3”)

谢谢

4

1 回答 1

1

这是所有异常处理机制的标准行为。您有一个 TRY 和一个 CATCH 以及介于两者之间的代码。如果代码中有异常,它将停止运行并转到 CATCH 块。

如果要SELECT 'Testing 3'执行,它必须放在 TRY...CATCH 块之外。

如果您不想在 proc 上执行任何其他操作,则可以将所有内容放在 TRY...CATCH 块上,或者在 catch 块上执行

于 2012-04-19T11:56:28.930 回答