Kenan kılıçaslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
SQL Server

TRY...CATCH... Bloğu

Try…catch .. hata kontrolünde kullanılır. Sql 2005’den sonraki sürümlerde vardır. Bunun alternatifi @@error değişkenidir.

Blok yapısı

BEGIN TRY
    ...
    ... (hata yokken çalışan kodlar)
    ...
END TRY
BEGIN CATCH
    ... (hata oluştuğunda çalışan kodlar)
END CATCH

If içinde birden fazla sql komutu bulunacak ise bu komutlar BEGIN ... END arasına konur

Çalışma mekanizması

Try bloğu içinde herhangi satırda hata oluştuğunda devamındaki satırlar çalışmadan, program akışı catch bloğuna geçer. Try içinde hata yoksa try bloğu sonuna kadar çalışır ve catch bloğu içine girilmez.

Örnek:

BEGIN TRY
    BEGIN TRAN
    Delete from tbl_personel where bolum=10
    Update tbl_personel set maas=1000 where bolum=12
    COMMIT TRAN
END TRY
BEGIN CATCH
    ROLLBACK TRAN
END CATCH

Yukarıdaki kodda try bloğu içinde normalde çalışacak kod vardır. Begin tran ile transaction başlatılıyor. Devamındaki delete ve update kodları çalışıyor. Eğer delete ve update kodunda hata oluşmaz ise, commit tran çalışarak işlem tamamlanıyor. Eğer kodda yer alan delete veya update kodunda hata olursa, devamındaki kod çalışmadan, akış catch bloğuna geçer, catch bloğunda bulunan rollback tran çalışarak, o ana kadar yapılan değişiklikler geri alınmış olur.

beyaz_sayfa_en_alt_oval