Friday 6 July 2012

TRY CATCH Block Explained

Every TRY block should have its corresponding CATCH block. No statements are allowed between END TRY and BEGIN CATCH.

Ø  Valid Example: following is a valid usage of TRY CATCH and BEGIN END blocks

BEGIN

  BEGIN TRY

        BEGIN

          SELECT 'block a'

        END

        BEGIN

          SELECT 'block b'

          RAISERROR(1,16,1)

        END 

  END TRY

  BEGIN CATCH

    SELECT 'catch statement'

  END CATCH

END



Ø  Invalid Example: Following example is invalid due to highlighted statements. You cannot have any statements in between END TRY and BEGIN CATCH statements.

BEGIN

  BEGIN TRY

        BEGIN

          SELECT 'block a'

        END

        BEGIN

          SELECT 'block b'

          RAISERROR(1,16,1)

        END 

  END TRY

  BEGIN

  BEGIN CATCH

    SELECT 'catch statement'

  END CATCH

  END

END



Ø  BEGIN TRY … END TRY is a single block of code, you can have nested BEGIN END blocks inside it but BEGIN … END statements cannot span across the TRY… CATCH block. That means these blocks cannot be intersecting each other. Explained through a Venn Diagram:





No comments:

Post a Comment