Javada Try-catch-finally Ve Throw, Throws Kullanımı

Javada try-catch-finally ve throw, throws kullanımı detaylı anlatım

Javada try-catch-finally ve throw, throws kullanımı

Çalışma zamanında beklenmeyen bir hata oluşması durumuna exception; bir istisnanın yaratılıp program içerisine atılması işlemine throwing; oluşan bir istisnayı yakalayıp problemin çözülmesi adına belirtilen ifadeleri çalıştırma  işlemine catching; istisna ile uğraşan kod bloğuna catch clause (catch block); istisnanın oluştuğu noktada kontrol sağlayan bir dizi metot çağırma işlemine stack trace denir.

İstisnalar için izlenen kod, bir try bloğu içerisinde tutulur. Bu bloğun anlamı ‘ bu kodu çalıştır ve istisna oluşacak mı gör ‘ şeklinde ifade edilebilir. Eğer try bloğu içerisinde bir istisna meydana gelirse, bir istisna nesnesi yaratılır ve kod içerisine atılır. Programımız bu istisnayı catch ifadesi ile yakalayabilir ve işleyebilir. Her catch bloğu ne tipte bir istisnayı yakalayabileceğini belirler ve içerisinde o tipte istisnayı işlemek üzere bir istisna işleyici bulunur. Eğer programcı bir istisnayı bizzat atmak istiyorsa  throw ifadesini kullanacaktır. Bir metottan atılan her istisna bir throws kalıbı ile belirtilir. Son olarak finally ile belirtilen bloğun içindeki kod, istisna oluşsun oluşmasın kesinlikle çalışması gereken koddur. Yani bazı kodların her ne olursa olsun çalışması gerekiyorsa finally bloğunun içinde yer almalıdır.

Bazı İstisnalar ;

- ArithmeticException; Sıfıra bölme gibi aritmetik hata.

- ArrayIndexOutOfBoundsException; Dizi indeksi sınırların dışındadır.

- ArrayStoreException; Bir dizi elemanına, uyumsuz bir tipin atanması.

- ClassCastException; Geçersiz tip ataması.

- IllegalArgumentException; Bir metot çağırmak için geçersiz argüman kullanımı.

- IllegalMonitorStateException; Kilitlenmemiş bir kanalda bekleme gibi geçersiz izleme işlemi.

- IllegalStateException; Ortam veya uygulama yanlış durumdadır.

- IllegalThreadStateException; Talep edilen işlem geçerli kanal durumuyla uyumlu değildir.

- IndexOutOfBoundsException; Bazı indeks tipleri sınırın dışındadır.

- NegativeArraySizeException; Negatif boyutta oluşturulan dizi.

- TypeNotPresentException; Tip Bulunamadı.

 

Try - Catch

Bu örnekte iki tane catch(istisna) tanımladık, döngüde sadece tanımladığımız kadar istisna olur.

package trycatch;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
       
        // TRY - CATCH

        try {

        int Bölünecek=0, Bölen=0;

        Bölünecek = Integer.valueOf(JOptionPane.showInputDialog("Bölmek İstediğiniz Sayıyı Giriniz"));
        Bölen = Integer.valueOf(JOptionPane.showInputDialog(Bölünecek + "Sayısını Kaça Böleceksiniz"));
        long Sonuc = Bölünecek / Bölen;
        } catch (ArithmeticException Hata) {
        JOptionPane.showMessageDialog(null, "Matematiksel Hata");
        } catch (NumberFormatException Hata) {
        JOptionPane.showMessageDialog(null, "Girilen Değer Rakam Olmalı");
       
        }
    }
}

Ekran Çıktısı;

Javada Try-catch-finally Ve Throw,
Throws
KullanımıJavada Try-catch-finally Ve Throw, Throws
Kullanımı

Javada Try-catch-finally Ve Throw, Throws
KullanımıJavada Try-catch-finally Ve Throw, Throws
Kullanımı

Javada Try-catch-finally Ve Throw, Throws
Kullanımı

 

Try - Catch - Finally

Bu örnekte ise finally,tanımladığımız hatalar olmasa bile programın sonunda sanki bir hata varmış gibi ya da hata olsa bile sanki tanımlanmamış farklı bir hata varmış gibi davranır. 

 package trycatch;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
       
        // TRY - CATCH - FİNALLY

        try {

        int Bölünecek=0, Bölen=0;

        Bölünecek = Integer.valueOf(JOptionPane.showInputDialog("Bölmek İstediğiniz Sayıyı Giriniz"));
        Bölen = Integer.valueOf(JOptionPane.showInputDialog(Bölünecek + "Sayısını Kaça Böleceksiniz"));
        long Sonuc = Bölünecek / Bölen;
        } catch (ArithmeticException Hata) {
        JOptionPane.showMessageDialog(null, "Matematiksel Hata");
        } catch (NumberFormatException Hata) {
        JOptionPane.showMessageDialog(null, "Girilen Değer Rakam Olmalı");
        } finally {
        JOptionPane.showMessageDialog(null, "Finally");
        }

    }
}
 

 

Ekran Çıktısı;

Javada Try-catch-finally Ve
Throw, Throws
KullanımıJavada Try-catch-finally Ve Throw, Throws
KullanımıJavada Try-catch-finally Ve Throw, Throws
Kullanımı

 

Throw

Programımızın açıkça throw ifadesini kullanarak bir istisnayı fırlatmasıda mümkündür. 

 package trycatch;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
       
        // THROW

        try {
       
        int Bölünecek=0, Bölen=0;

        Bölünecek = Integer.valueOf(JOptionPane.showInputDialog("Bölmek İstediğiniz Sayıyı Giriniz"));
        Bölen = Integer.valueOf(JOptionPane.showInputDialog(Bölünecek + "Sayısını Kaça Böleceksiniz"));
        long Sonuc = Bölünecek / Bölen;

        throw new ArithmeticException ("Hata");
       

        } catch (ArithmeticException Hata) {
        JOptionPane.showMessageDialog(null, "Matematiksel Hata");
        }

       
    }
}
 

 

Throws

Eğer bir metot yönetemediği bir istisnaya neden olursa, metot çağırıcılarının kendilerini bu istisnaya karşı koruyabilmeleri için, metodun bu davranışı belirtmesi gerekir. Bunu, metodun deklarasyonuna bir throws cümleciği ekleyerek yapabilirsiniz. 

package trycatch;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) throws ArithmeticException, NumberFormatException {
       
        // THROWS

        try {
       
        int Bölünecek=0, Bölen=0;

        Bölünecek = Integer.valueOf(JOptionPane.showInputDialog("Bölmek İstediğiniz Sayıyı Giriniz"));
        Bölen = Integer.valueOf(JOptionPane.showInputDialog(Bölünecek + "Sayısını Kaça Böleceksiniz"));
        long Sonuc = Bölünecek / Bölen;

        } catch (ArithmeticException Hata) {
        JOptionPane.showMessageDialog(null, "Matematiksel Hata");
        } catch (NumberFormatException Hata) {
        JOptionPane.showMessageDialog(null, "Girilen Değer Rakam Olmalı");
        }

    }
}

 

 

Numan Bezaroğlu

Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...