06.03.2015 Views

Java Kitabı

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Önce basla() yordamının içerisinde yakalanan istisna, finally bloğunun çalıĢtırılmasından sonra bir<br />

üst kısma fırlatılabilmiĢtir. Fırlatılan bu istisna main() yordamı içerisinde yakalanmaktadır. ()<br />

Peki ya basla() yordamı bir değer döndürseydi olaylar nasıl değiĢirdi? ()<br />

Örnek: FirlatimOrnek2.java ()<br />

public class FirlatimOrnek2 {<br />

public int basla(int a, int b) throws Exception {<br />

int sonuc = 0;<br />

try {<br />

sonuc = a / b;<br />

} catch(Exception ex) {<br />

System.out.println("basla() istisna<br />

yakalandi");<br />

throw ex;<br />

} finally {<br />

System.out.println("sonuc: "+ sonuc);<br />

return sonuc; // dikkat<br />

}<br />

}<br />

public static void main(String args[]) {<br />

try {<br />

FirlatimOrnek2 fo2 = new FirlatimOrnek2();<br />

fo2.basla(1,0);<br />

} catch(Exception ex) {<br />

System.out.println("main() istisna yakalandi");<br />

}<br />

}<br />

}<br />

Uygulamamızın çıktısı nasıl olacaktır? Bir önceki uygulama ile aynı mı? ()<br />

basla() istisna yakalandi<br />

sonuc: 0<br />

OluĢan istisna, basla() yordamında yakalanmıĢtır ama daha sonra ortalardan kaybolmuĢtur. Aslında bu<br />

olay hata gibi algılanabilir ve haklı bir algılamadır. Fakat olaylara birde <strong>Java</strong> tarafından bakarsak anlayıĢ<br />

gösterilebilir. Bir yordamın bir seferde sadece tek bir Ģey döndürme hakkı vardır. Ya bir değer döndürebilir<br />

veya bir istisna fırlatabilir, sonuçta fırlatılan bir istisna da değer niteliği taĢır. Bu uygulamamızda<br />

basla() yordamı int tipinde değer döndüreceğini söylediği ve finally bloğu kullanıldığı için, oluĢan<br />

bir istisnanın tekrardan fırlatılması olanaksızdır. Bu iĢin bir çözümü var mı? DüĢünelim... Bir yordam bir<br />

değer döndürse bile eğer bir istisna oluĢursa bu oluĢan istisnayı öncelikli olarak nasıl fırlatabilir? Böyle bir<br />

ikilem ile er ya da geç karĢı karĢıya kalınacaktır. AĢağıdaki gibi bir çözüm iĢ görecektir. ()<br />

Örnek: FirlatimOrnek3.java ()<br />

public class FirlatimOrnek3 {<br />

public int basla(int a, int b) throws Exception {<br />

int sonuc = 0;<br />

Exception globalEx = null;<br />

try {<br />

241

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!