şükela:  tümü | bugün
  • c# dilinde, istisnai durum* yakalama mekanizmasını sağlayan dört tane anahtar sözcükten, bir kod bloğunu temsil eden üçüdür. bir diğeri ise hatanın fırlamasını sağlayan throw'dur.

    try: kaynak koddaki hataların bulunacağı kod bloklarını temsil eder. yani try anahtar sözcüğü ile açılan blokta istisnai durum meydana gelirse ilgili hatayı temsil eden istisnai durum sınıfı fırlatılır.

    catch: try bloğundan fırlatılan hatanın yakalanıp gelen hataya göre işlemler yapan kod bloğunu temsil eder.

    finally: hata ister oluşsun, ister oluşmasın mutlaka çalıştırılacak kod bloğunu temsil eder. ancak try ve catch blokları istisnai durum yakalama mekanizmasının çalışması için mutlaka olmalıdır. finally bloğunu belirtmek zorunda değiliz.

    try
    {
    //hatanın fırlatıldığı bölüm
    //hata oluşabilecek kodlar
    }
    catch(hatasınıfı a)
    {
    //hatanın elde edilmesi
    //hata oluştuğunda çalıştırılacak kodlar
    }
    finally
    {
    //kaynakların temizlenmesi
    //her halükarda çalıştırılacak kodlar
    }
  • bunun bir de veritabanı bağlantısında iş bittikten sonra finally bloğunda bağlantının kapatılmasını otomatiğe bağlayan (ve bu tarz işler için kullanılan) using versiyonu ve sanırım java için de try versiyonu vardır. eğer kullandığınız nesne ıdisposable sınıfını extend ediyorsa (c#) ya da autodisposable (java) o halde c# için using, java için try statement'ini şunun gibi kullanabilirisiniz:

    using (var zimbirti =new zimbirti()){/*..*/ }

    ya da java için

    try(zimbirti zimbirti =new zimbirti()){/*..*/ }

    bu iki söz dizimi de sonunda finally varmış gibi çalışır

    edit: sabah sabah yorum satırı bile yazamadım /../ olan kısımlar /*..*/ ile değiştirildi
  • yazılımın kalitesi ve kullanılma sıklığı arasında ters orantı vardır.
  • python'da kendileri try - except - else - finally olarak görülür.

    else bloğu hata fırlatılmazsa çalışır. diğer blokların çalışma mantığı aynı.

    try - try
    catch - except
    ? - else
    finally - finally

    güncelleme: kaynak
  • kısaca şöyle açıklanabilir.

    try
    {
    elibük();
    }
    catch(exception e)
    {
    mesaj( e.tostring() yüzünden elibükemedik)
    }
    finally
    {
    eliöp();
    }
  • java'da try veya catch de return edilse bile finally her türlü çalışır.
  • finally blogunun anlami return edildiginde calismayacaksa bi anlami olmaz zaten.

    c# da finally blogunu return etsen de calistirir. recursion'a girsen bile calistirir. compiler'a seks kolesi muamelesi yapar.

    https://stackoverflow.com/…n-a-value-in-a-try-block
  • verilen kod örneği yanlıştır.
    try'da yapmak istediklerini yazarsın.
    catch'de hata oluşması durumunda yapılacakları.
    finnaly'de ise başarılı ya da başarısız sonlanınca yapılacakları.

    try
    {
    //dene
    elibük();
    }
    catch(exception e)
    {
    //başaramamışsan bunları yap
    mesaj( e.tostring() yüzünden elibükemedik)
    eliöp();
    }
    finally
    {
    //başarılı ya da başarısız, bunları da yap
    eliyika();
    }

    olmalıdır.

    (bkz: ekşisözlük kod öğreniyorum platformu)