BSM201 Nesneye Dayalı Programlama · 2019. 12. 4. · throws istisna1, istisna2 . 22 Kendi...

25
BSM201 Nesneye Dayalı Programlama 11. Hafta İstisna Yönetimi (Exception Handling) Dr. Öğr. Üyesi Nesibe YALÇIN BARTIN ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Transcript of BSM201 Nesneye Dayalı Programlama · 2019. 12. 4. · throws istisna1, istisna2 . 22 Kendi...

  • BSM201 Nesneye Dayalı Programlama

    11. Hafta – İstisna Yönetimi

    (Exception Handling)

    Dr. Öğr. Üyesi Nesibe YALÇIN

    BARTIN ÜNİVERSİTESİ

    MÜHENDİSLİK FAKÜLTESİ

    BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

  • 2

    İstisnalar - Exceptions

    ― İstisna, çalışma zamanında oluşan bir hatadır. • Kullanıcı geçersiz bir veri girebilir. • Açılması geren dosya bulunamayabilir. • İletişimin ortasında ağ bağlantısı kaybolabilir. • JVM belleği tükenebilir. • …

    ― İstisna meydana geldiğinde, normal akış işlemleri durdurulur ve istisna yönetimi işlemi yürütülür. (fırlatma-throw)

    ― İlgili istisna yönetimi kodu işletildiğinde fırlatılan (thrown) hata yakalanır. (catch)

  • 3

    İstisnalar - Exceptions

  • 4

    İstisna Sınıfları

    • İstisna Sınıfları, istisnaların yakalanarak ele alındığı sınıflardır.

    • Bu sınıflar, en süper sınıf olan Object sınıfından türetilmiş THROWABLE sınıfından türetilmektedir.

    java.lang.Object java.lang.Throwable

    • java.lang.Exception • java.lang.Error

    • Throwable sınıfı 2 alt başlıkta toplanır: Error ve Exception

    sınıfları.

  • 5

    İstisna Sınıfları

  • 6

    İstisna Sınıfları

    1- Error Sınıfı: VirtualMachineError: JVM’nin çalışmasını etkileyen durumları inceler. OutOfMemoryError: Bellek yetersizliği durumlarını inceler.

    2- Exception Sınıfı: RunTimeException: Çalışma zamanı hatalarını inceler. FileNotFoundException: Olmayan bir dosyaya erişme isteğini inceler.

    IOException: Giriş/çıkış işlemlerindeki istenmeyen durumları inceler. AritmeticException: Aritmetik hataları inceler. NullPointerException: Herhangi bir nesneye null referanslı bir değişken ile ulaşılmaya çalışılan durumlarda fırlatılır. IllegalArgumentException: Geçersiz argüman atamalarında fırlatılır. http://rymden.nu/exceptions.html

    http://rymden.nu/exceptions.html

  • Checked ve Unchecked İstisna

    Durumları

    • Unchecked Exceptions: Geliştirme esnasında değil çalışma esnasında ortaya çıkar. Bu tür hataların yakalanması veya metot tanımında throws ile belirtilmesi zorunlu değildir. – IndexOutOfBoundsException

    – ArithmeticException

    – NullPointerException

    – StackOverFlowError

    • Checked Exceptions: Derleme anında mutlaka yakalanmaları gerekir. Koddaki beklenmeyen durumları ifade ederler. – IOException

    – SqlException

  • 8

    İstisna Sınıflarına İlişkin Metotlar

    • getMessage(): İstisna nesnesi içersindeki mesajı döner.

    • toString(): istisna mesajını ile istisna adını döndürür.

    • getStackTrace(): oluşan istisnanın bilgilerini (hatanın hangi metotta, hangi dosyada ve satır numarasında oluştuğu hakkında) aşama aşama stacktrace tipinde bir dizi olarak döndürür.

    • printStackTrace(): ToString metodundan dönen hatayı trace ile birleştirerek ekrana yazdırır.

  • 9

    İstisnaları Yakalama

    • Java’da istisna işleme konusunda 5 anahtar sözcük kullanılmaktadır; try-catch, finally, throw, throws’ dır. try { //istisnaya sebep olabilecek komutlar } catch (Exception e){ //istisna meydana geldiğinde çalışsın istenen komutlar } finally { //istisna olsun olmasın çalışsın istenen komutlar }

  • 10

    İstisnaları Yakalama

    try { //komutlar } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (IOException e) { System.out.println(e + " IO EXCEPTION"); } catch (Exception e) { System.out.println(e + " EXCEPTION"); }

  • 11

    İstisnaları Yakalama

    e.printStackTrace(); java.util.InputMismatchException

  • 12

    İstisnaları Yakalama

  • 13

    İstisna Fırlatma

    ― Bir istisna, throw/throws deyimleri kullanılarak fırlatılır. • Bir durum istisnaya sebep olabilirse; if(a

  • 14

    İstisna Fırlatma

  • 15

    İstisna Fırlatma

  • 16

    İstisna Fırlatma

  • 17

    İstisna Fırlatma

  • 18

    İstisna Fırlatma

  • 19

    Dikkat!

    • İstisnalar olabildiğince spesifik tanımlanmalıdır, fırlatılmalıdır.

    • Hata yakalanmayacaksanız catch kullanmayın!

    • catch bloğu içerisi boş bırakılmamalıdır.

    • Kodda birden fazla catch olacaksa daha spesifik olan istisnayı başa yazmalısınız.

    • finally içinde throw yapmayın!

    • Kendi oluşturduğunuz bir exception fırlatılacaksa bunu program başında açıklama satırı olarak belirtmelisiniz.

  • 20

    Kendi İstisna Sınıfımızı Oluşturma

    throw new sifira_bolme_hata(“Bölen sıfır olamaz”);

  • 21

    Uygulama

    NOT: Birden fazla istisna fırlatılabilir. …. throws istisna1, istisna2

  • 22

    Kendi İstisna Sınıfımızı Oluşturma

  • 23

    Uygulama

  • 24

    Uygulama

  • 25

    Uygulama – Sihirli Kareler

    • Bütün satır ve sütunların toplamı 15