鉴于以下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中执行(即选择'Testing 3')
由于
答案 0 :(得分:1)
这是所有异常处理机制的标准行为。你有一个TRY和一个CATCH和代码。如果代码中有异常,它将停止运行并转到CATCH块。
如果要执行SELECT 'Testing 3'
,则必须将其放在TRY ... CATCH块之外。
如果您不想在proc上执行任何其他操作,您可以将所有内容放在TRY ... CATCH块上,或者在catch块上执行