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.

} else if(deger == 1) {<br />

throw new EOFException("Dosyanin sonuna geldim");<br />

}<br />

Bu yüzden iptal edilen yordamın olabilecek en kapsamlı istisnayı fırlatması gerekir -ki yukarı çevirim<br />

iĢlemlerinde (upcasting) iptal eden yordamların gövdelerinden fırlatılabilecek olan istisnalara karĢı aciz<br />

kalınmasın. Olabilecek en kapsamlı istisna tipi bu uygulama örneğimizde IOException istisna tipindedir<br />

çünkü bu istisna tipi hem FileNotFoundException istisna tipini hem de EOFException kapsamaktadır<br />

(bkz:ġekil-85.). ()<br />

Uygulamamızın çıktısı aĢağıdaki gibidir.<br />

Calisan calisiyor 2<br />

Calisan calisiyor 1<br />

Istisna olustu: java.io.EOFException: Dosyanin sonuna geldim<br />

Calisan calisiyor 0<br />

Istisna olustu: java.io.FileNotFoundException: Dosyayi bulamadim<br />

8.1.13. İstisnaların Sıralanması<br />

Bir istisna catch bloğunda veya catch bloklarında yakalanırken, istisnaların hiyarerĢik yapılarına dikkat<br />

edilmelidir. ()<br />

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

class IstisnaBir extends Exception {<br />

}<br />

class IstisnaIki extends IstisnaBir {<br />

}<br />

public class IstisnaSiralamasi {<br />

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

try {<br />

throw new IstisnaIki(); // dikkat<br />

} catch (IstisnaIki is2) {<br />

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

IstisnaIki: " );<br />

} catch (IstisnaBir is1) {<br />

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

IstisnaBir: " );<br />

}<br />

}<br />

}<br />

Bu örneğimizde kendimize özgü iki adet istisna tipi vardır. IstisnaIki sınıfı, IstisnaBir sınıfından<br />

türetilmiĢtir. Bunun anlamı eğer IstisnaIki tipinde bir istisna fırlatılırsa bunun IstisnaBir tipiyle catch<br />

bloğunda yakalanabileceğidir. Yukarıdaki örneğimizde IstisnaIki tipinde bir istisna fırlatılmaktadır,<br />

fırlatılan bu istisna ilk catch bloğunda yakalanmaktadır. Bir istisna bir kere yakalandı mı artık diğer<br />

catch bloklarının bu istisnayı bir daha tekrardan yakalama Ģansları yoktur (tekrardan fırlatılmadıkları<br />

varsayılarak). Yani bir istisna bir kerede ancak bir catch bloğu tarafından yakalanabilir. Uygulamanın<br />

çıktısı aĢağıdaki gibidir. ()<br />

246

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

Saved successfully!

Ooh no, something went wrong!