Try Catch yapısını, transactionlar ile kullanmak hem yapılan kontrol sayısını azaltır, hem de daha anlaşılır bir kod yazmanızı sağlar.
Try Catch kullanılmazsa (SQL 2005 öncesi versiyonlarda zaten try catch olmadığı için mecburan) her bir statementdan sonra @@Error den gelen hata kodunu bir değişkene atmanız, bir sorun varsa rollback yoksa kodun devam etmesi veya commit etmesi için if cümleleri ile uğraşmanız gerekir.
TRY/CATCH ile hataları yönetmek ve transactionlar ile çalışmak daha da kolaylaştı.
İşte birkaç örnek.
DECLARE @ErrorNumber int = 0 , @ErrorMessage nvarchar(max)
BEGIN TRANSACTION
BEGIN TRY
…
END TRY
BEGIN CATCH
SELECT @ErrorNumber = ERROR_NUMBER(), @ErrorMessage = ERROR_MESSAGE()
END CATCH
IF @ErrorNumber<>0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
-------------------------------
DECLARE @ErrorNumber int = 0 , @ErrorMessage nvarchar(max)
BEGIN TRANSACTION
BEGIN TRY
…
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT @ErrorNumber = ERROR_NUMBER(), @ErrorMessage = ERROR_MESSAGE()
IF @@TRANCount>0 ROLLBACK TRANSACTION
END CATCH
Hiç yorum yok:
Yorum Gönder