Try ve Catch Komutları

 

Try komutu istisna yönetimi yapacağın kod bloğunun başladığını gösterir. Ve bu blok içinde herhangi bir istisna fırlatılır ise yakalanabilir ve buna göre yönetilebilir.

Catch ifadesi try bloğundan sonra gelir ve bir istisna fırlatıldığında yakalanıp hangi kodun işletileceğini tanımlar. Catch durumu tanımlanmak zorunda değildir ama yinede her try durumu bir catch durumuna sahip olmalıdır.

Retry komutu sistemin tekrar try bloğu içindeki kodu işlemesi anlamına gelir.

Örnek: Try, Catch, Retry

CustTable custTable;

;

try

{

    custTable.AccountNum =“0001”;

    custTable.custGroup =“50”;

    custTable.Name =“Example of try catch”;

    custTable.insert();

}

catch (Exception::error)

{

    error(“There was an error while inserting the record.”);

}

catch (Exception::deadlock)

{

    retry;

}

İki catch durumunun olduğunu görüyoruz. Bunlardan biri error istisnası içindir ve insert methodunda oluşabilecek bir hata yakalamak için konmuştur. İkincisi ise veritabanındaki deadlock istisnasını yakalamak için kullanılmıştır.

Deadlock istisnası fırlatıldığında tablo üzerindeki tüm kilitler serbest bırakılır. Burda söylenmesi gereken bir şey daha var retry ile tekrar try bloğu işletilmeye çalışılır ve fakat kısır döngüye girilmemesi için bir sayaç yardımı ile kaç defa denendiği ve kaçıncıda denenmemesi gerektiği belirtilmelidir.

Fırlatılan İstisnalar

Throw durumu catch bloğu ile yakalanabilen hataları fırlatmak için kullanılır. Bu komut fırlatılan hatanın tipini açıkça yayımlar. Eğer try bloğu bir catch listesine sahip değil ise hata bir sonraki try bloğuna taşınır.

Örnek: Throw İfadesi

try

{

    select custTable

        where custTable.accountNum == ’1019′;

    if (!custTable.RecId)

        throw error(“Customer does not exist”);

}

catch (exception::error)

{

    error (“Process was aborted”);

}

ttsabort komutu işlemi sonlandırır ve veriyi ttsBegin durumundaki haline döndürür . Sistem bir hata fırlattığında ttsAbort otomatik olarak çağırılır ve catch bloğu içinde tekrar çağırılmasına gerek kalmaz.

 
  • Trackback are closed
  • Comments (1)
    • erm
    • Mayıs 31st, 2014 10:32pm

    hocam verdiğin örnekleri daha açık bir şekilde verebilir misin benim gibi amatör meraklılar için yani try catch kalıbı verilen hatayı yakalıyor ama nasıl yakalıyor daha az terimsel ifadeler içeren bir örneğin var mı verdiğiniz bilgiler içinde teşsekürler

Comment are closed.