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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Ö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!