Exception Handling, Throw, Throws

Kategori: Java , 16 Temmuz 2019 , JanFranco


Exception hangling uygulamasında, hatalar checked ve unchecked olarak ikiye ayrılır. Eğer bir hata checked sınıfındaysa Java kodu yazdığımız esnada burada bir hatanın çıkabilecek olduğunu ve try-catch ile kontrol etmemizi söyler. Unchecked hataları ise Java öngöremez. İki fonksiyon yazalım ve checked-unchecked farkını görelim:


public static void mekanKontrol(int yas) {
	
	if(yas < 18) {
		throw new ArithmeticException();
	}
	else {
		System.out.println("Mekana hoşgeldiniz...");
	}
	
}

public static void mekanKontrol2 (int yas) throws IOException{
	
	if(yas < 18) {
		throw new IOException();
	}
	else {
		System.out.println("Mekana hoşgeldiniz...");
	}
	
}
IOException gibi checked bir exception gönderirsek, Java burada hata verir. Çünü IOException bir checked exception'dır ve Java burada böyle bir hatanın olma olasılığının olmadığını görür. Böyle bir durumda methodun yanına throws IOException yazmamız gerekir. ArithmeticException ise unchecked bir exceptiondır. Bu iki fonksiyonu main methodundan çağıralım:

Scanner scanner = new Scanner(System.in);
System.out.print("Yaş: ");
int yas = scanner.nextInt();
		
try {
	mekanKontrol(yas);
} catch (ArithmeticException e) {
	System.out.println("18 yaşından küçükler giremez...");
}

System.out.println("Deneme");

System.out.println("*******************");

System.out.print("Yaş: ");
yas = scanner.nextInt();

try {
	mekanKontrol2(yas);
} catch (IOException e) {
	System.out.println("18 yaşından küçükler giremez...");
}

System.out.println("Deneme2");
İlk fonksiyonu yazdığımızda Jsva uyarı vermez. İkinci fonksiyonda checked bir exception olduğu için Java try-catch bloğunu kullanmamızı zorunlu kılar. Eğer kullanmak istemiyorsak da main methodunun yanına throws IOException yazmamız gerekir. Peki böyle bir durumda hatayı kim yakalayacak? Böyle bir durumda hatayı, bu programı kullanan başka bir program (API vs) yakalayacak. Veya programı kullanan kullanıcı yakalayacak. Çıktıyı görelim:

Yaş: 21
Mekana hoşgeldiniz...
Deneme
*******************
Yaş: 12
18 yaşından küçükler giremez...
Deneme2


Sonraki Yazı: Exception Handling, Creating Own Exception Classes
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın