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.

AkıĢ Ģemasında numaralandırılmıĢ olan okları takip ederseniz olayların geliĢimini çok rahat bir Ģekilde<br />

kavrayabilirsiniz. AkıĢ diyagramımızı açıklamaya baĢlayalım; ()<br />

1. Öncelikle akıĢ, main() yordamının içerisinden baĢlar. Bu uygulamamızda main()<br />

yordamının içerisinden calis() yordamı çağrılmıĢtır. ()<br />

2. calis() yordamının içerisinden cokCalis() yordamı çağrılmıĢtır. ()<br />

3. cokCalis() yordamının içerisinde istisna oluĢmuĢtur çünkü uygulamamızın yer aldığı dizinin<br />

içerisinde ornek.txt dosyası aranmıĢ ve bulunamamıĢtır. ġimdi kritik an geldi, cokCalis()<br />

yordamının içerisinde try-catch mekanizması var mı? ()<br />

4. Hayır, cokCalis() yordamının içerisinde oluĢan istisnayı yakalama mekanizması<br />

yoktur(try-catch) ama java.io.IOException tipinde bir hata nesnesi fırlatacağını "throws<br />

IOException" diyerek belirtmiĢtir. Ġstisna oluĢmuĢ ve istisna nesnesi (java.io.IOException) bir<br />

üst bölüme yani calis() yordamına fırlatılmıĢtır. ()<br />

5. Artık istisna nesnemiz calis() yordamının içerisindedir, Ģimdi sorulması gereken soru "<br />

calis() yordamının içerisinde hata yakalama mekanizması var mıdır? " ()<br />

6. calis() yordamının içerisinde hata yakalama mekanizması vardır (try-catch) bu yüzden<br />

catch bloğunun içerisindeki kod çalıĢtırılır ve ekrana " Hata Yakalandi-calis()<br />

=java.io.FileNotFoundException: ornek.txt (The system can not find the file specified) " basılır,<br />

yani dosyanın olmayıĢından dolayı bir istisna olduğu belirtilir. Dikkat edilirse ekrana " calis()<br />

yordamı " basılmadı bunun sebebi istisnanın oluĢmasından dolayı akıĢın catch bloğuna<br />

dallanmasıdır. Not: java.io.IOException istisna tipi, java.io.FileNotFoundException istisna tipini<br />

kapsadığından bir sorun yaĢanmaz bunun nasıl olduğunu biraz sonra inceleyeceğiz. ()<br />

7. Son olarak akıĢ main() yordamına geri döner ve main() yordamının içerisinde<br />

çalıĢtırılmamıĢ olan kodlar çalıĢtırılır ve ekrana "main() yordamı" basılır. ()<br />

8. Ve uygulamamız normal bir Ģekilde sona erer. ()<br />

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

Hata Yakalandi-calis() =java.io.FileNotFoundException: ornek.txt (The<br />

system can not find the file specified)<br />

main() yordamı<br />

Bu örneğimizdeki ana fikir, bir istisna kesin olarak oluĢtuğu yordamın içerisinde yakalanmayabileceğidir.<br />

Fırlatma özelliği sayesinde istisna nesnesi (eğer istisna oluĢmuĢ ise) bir üst bölüme yani istisna oluĢan<br />

yordamı çağıran yordama fırlatılabilir. ()<br />

Peki bu istisna nesnesi (java.io.IOException) calis() yordamın yakalanmasaydı ne olurdu? Cevap: O<br />

zaman main() yordamın yakalanırdı. Nasıl? Hemen gösterelim. ()<br />

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

import java.io.*;<br />

public class IstisnaOrnek4 {<br />

public void cokCalis() throws IOException {<br />

File f = new File("ornek.txt");<br />

BufferedReader bf = new BufferedReader( new FileReader(<br />

f ) );<br />

System.out.println(bf.readLine());<br />

}<br />

public void calis() throws IOException {<br />

cokCalis();<br />

212

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

Saved successfully!

Ooh no, something went wrong!