BSM201 Nesneye Dayalı Programlama · 2019. 12. 4. · throws istisna1, istisna2 . 22 Kendi...
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