Pure Java – 48 Handling Exception – 02

Merhaba Arkadaslar,
Bir onceki bolumde Java’da exception mekanizmasina giris yapmistik. Bu yazimda ducked exception kavramindan dolayisiyla Propagating Uncaught Exceptions kavramindan bahsedecegim.( yakalanamayan hatalarin yayilimi diye cevirmeye calisalim. )

Propagating Uncaught Exceptions
try blogunda bir exception firlatildiginda ve bu exceptiona karsilik uygun bir catch olmadigi durumda ne olacak ? Eger bir metot firlatilan bu exception’i desteklemiyorsa (yani yakalayamiyorsa) bu duruma ducked exception denilir.

Ducked exception durumundan once stack mantigini anlamamiz gerekir.

Programimiz main() metodunda baslar bu main metodu a() metodunu a() metodu b() metodunu ve b() metodu da c() metodunu cagirirsa stack yapisi su sekilde olacaktir;

c
b
a
main

Ducked exception mekanizmasi da ayni yapida calisacaktir.
4 katli bir bina dusunelim, bina yukaridan asagiya coktugunde 4.kat 3.katin, 3.kat 2.katin uzerine 2.kat da 1.katin uzerine dusecektir.
Benzer sekilde c() metotundan bir exception firlatildiginda bu exception sirasi ile b,a ve main metoduna ulasacaktir sonuc olarak uygulamamiz binanin tuz buz olmasi gibi patlayacaktir.

DuckedException.java

public class DuckedException {
	public static void main(String[] args) {
		doStuff();
		System.out.println("Uygulamamiz patladigi icin bu cikti ekrana basilamaz.");
	}

	static void doStuff() {
		doMoreStuff();
	}

	static void doMoreStuff() {
		int x = 5 / 0; //
		// ArithmeticException hatasi firlatilacaktir.
	}
}

Exception in thread “main” java.lang.ArithmeticException: / by zero
at purejava48.DuckedException.doMoreStuff(DuckedException.java:14)
at purejava48.DuckedException.doStuff(DuckedException.java:10)
at purejava48.DuckedException.main(DuckedException.java:5)

main metodu doStuff() metodunu , doStuff() da doMoreStuff() metodunu cagirmakta.Yani stack yapisi;

doMoreStuff()
doStuff()
main()

doMoreStuff() metodunda 5/0 islemi ArithmeticException’a neden olur ve bu exception doMoreStuff() metodundan doStuff() metoduna oradan da main() metoduna firlatilir.Bu metotlarin hic birinde gonderilen hatayi yakalacayak bir catch yapisi olmadigi icin uygulama dibe vuracak ve patlayacaktir.System.out.println satirimiz calismayacaktir.

4.kat 3.katin uzerine dustugunde eger 3.katimiz saglamsa binamiz cokmeyecektir. Benzer sekilde ducked exception mekanizmasinda firlatilan hatayi yakalarsak uygulamamizi patlamaktan kurtarabiliriz.

public class DuckedException {
	public static void main(String[] args) {
		doStuff();
		System.out.println("Hata yakalandi, uygulama calismaya devam eder.");
	}

	static void doStuff() {
		try{
		doMoreStuff();
		}catch(Exception e) {

		}
	}

	static void doMoreStuff() {
		int x = 5 / 0; //
		// ArithmeticException hatasi firlatilacaktir.
	}
}

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *