Java'da try ve catch
Kötü slots[5] okumasını try ve catch içine sarın ki program ArrayIndexOutOfBoundsException üzerinde bitmesin. Catch içinde blocked yazdırın, sonra her iki bloğun dışında after yazdırın. Guard.java dosyasını derleyin ve java Guard çalıştırın. Ekran önce blocked, sonra after göstermeli. İkinci dosya slots[0] değerini try içinde tutar; catch atlanır ve ekran 2, sonra after gösterir. throw ifadesini sonraki sayfaya bırakın.
Kötü indeksi yakalamak
exceptions sayfası {2, 4} üzerinde slots[5] yazdırmanın ArrayIndexOutOfBoundsException fırlattığını ve çalışmayı durdurduğunu gösterdi. Bu sayfa aynı dizi öyküsünü tutar ve işlemeyi ekler. Guard.java adlı yeni bir öğretim dosyası açın. Dosya adıyla eşleşsin diye genel sınıf adını Guard tutun. Catch olmadan duran artakalan Alarm main’lerini, Crate Integer listelerini ve her Scanner veya nextLine çağrısını silin. Program yazı beklememeli.
main içinde aynı küçük diziyi tutun:
int[] slots = {2, 4};
Kötü yazdırmayı try içine koyun:
System.out.println(slots[5]);
Sonra ArrayIndexOutOfBoundsException adını veren ve blocked yazdıran bir catch yazın. Tüm try ve catchten sonra after yazdırın. Catch parametre adı e gibi kısa bir harf olabilir; bu sayfada exception nesnesini yazdırmanız gerekmez.
public class Guard {
public static void main(String[] args) {
int[] slots = {2, 4};
try {
System.out.println(slots[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("blocked");
}
System.out.println("after");
}
}
Guard.java dosyasının bulunduğu klasörden javac Guard.java çalıştırın. Parantezler, süslü ayraçlar ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Guard çalıştırın — java Guard.java değil. Çalıştırma komutundan .java sonunu çıkarın.
Ekran blocked, sonra after gösterir. Kötü indeks hâlâ try içinde fırlatır. Catch o adlı exception’ı işler ve blocked yazdırır. System.out.println("after"); satırı dışarıdadır, bu yüzden yine çalışır. Program çıplak kötü Alarm dosyası gibi o duruşta bitmez.
Aynı try içinde slots[5] sonrası hâlâ ikinci bir yazdırma olduğunu düşünün, örneğin rice yazdıracak satır. O satır çalışmaz. Exception yakalamak geri dönüp trynin geri kalanını bitirmez. Yalnızca catch gövdesi o duruş için çalışır, sonra denetim catch’ten sonra sürer. Fikri net tutun: işleme, fırlatma noktasından sonra try içindeki kalan satırları atlar.
Terminal klavye girişi bekliyorsa, bir dosyada eski bir alıştırmadan nextLine çağrısı hâlâ vardır. Onu silin. Yalnızca yığın raporu görüp blocked satırı yoksa catch eksiktir veya exception adı uyuşmuyordur. Yalnızca 2 görüp after yoksa belki hâlâ eski güvenli bir Alarm dosyası çalıştırıyorsunuzdur — catch öğretim dosyasıyla java Guarda geçin.
try bitince catch sessiz kalır
İkinci program aynı try ve catch biçimini kullanır, ancak try içindeki yazdırma yazılmış bir yuva ister: slots[0]. try içindeki her satır biter. Catch gövdesi çalışmaz.
public class Guard {
public static void main(String[] args) {
int[] slots = {2, 4};
try {
System.out.println(slots[0]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("blocked");
}
System.out.println("after");
}
}
javac Guard.java ile derleyin, sonra java Guard çalıştırın. Ekran 2, sonra after gösterir. blocked sözcüğü yazdırılmaz, çünkü ArrayIndexOutOfBoundsException yoktu. Catch sessiz kaldı. after satırı yine çalışır çünkü her iki bloğun dışındadır — catch demosundaki aynı yer.
Karşıtlığı bir kez yürütün. İlk dosya: kötü indeks, catch blocked yazdırır, sonra after. İkinci dosya: güvenli indeks, catch atlandı, ekran 2 sonra after. İkisi de Guard ve aynı catch tür adını tutar. Yalnızca try içindeki indeks değişir. Bu tek değişiklik catch’in ne zaman çalıştığını ve ne zaman çalışmadığını gösterir.
Bu sayfada throw uydurmayın. Zaten kötü bir dizi okumasının yol açtığı bir exception’ı yakalıyorsunuz. Sonraki sayfa bilerek fırlatma hakkındadır. Bugün kursun her sakin yazdırmasını da try içine sarmayın — bu ders bilinen kötü bir indeksin işlenmiş bir yola ihtiyaç duyduğu yerde try kullanır.
catch adı eşleşmeli
catch maddesi bir exception türü adlandırır. Bu sayfada o tür, kötü indekse uyan ArrayIndexOutOfBoundsExceptiondır. slots[5] çevresinde bunun yerine catch (NullPointerException e) yazarsanız, o catch duruşu işlemez. Program hâlâ ArrayIndexOutOfBoundsException ile biter ve o eşleşmeyen catch için ne blocked ne after yazdırılır. Öğretim dosyalarında eşleşen türü tutun.
Java’da başka exception adları vardır. Bu sayfa net bir çiftte kalır: kötü dizi indeksi ve ArrayIndexOutOfBoundsException. Bu biçimi çalışmadan önce her yakalanabilir türün kataloğuna ihtiyacınız yok. exceptions sayfasında gördüğünüz adla eşleştirin.
Çıplak Alarm duruşuyla karşılaştırma
exceptions sayfasında java Alarm slots[5] ile durdu ve bir yığın raporu gösterdi. Bu sayfada aynı kötü indeksle java Guard blocked yazdırır ve aftere kadar sürer. Dizi öyküsü değişmedi. İşleme değişti. Yakındalarsa Alarm dosyalarını yalnızca tarih olarak tutun; catch demoları için java Guard çalıştırın ki ekran bu derse uysun.
wrappers geçmişi eski dosyayı tutarsanız Integer listesinden hâlâ 9 yazdırır. O yol catch öyküsü değildir. Guard.java içindeki artakalan ArrayList<Integer> demolarını silin veya yok sayın ki öğretim dosyası int[] slots ile try ve catch üzerinde kalsın.
Bu sayfanın throwing için bıraktığı
Bu sayfa bir satırın zaten çarptığı bir exception’ı yakalar. Sonraki sayfa sorunu kendiniz bildirmeniz için throw tanıtır. Burada eşleşen catch ve afterin sürmesinde kalın. Bu Guard dosyalarına henüz zorunluluk olarak elle throw eklemeyin.
throwing’den önce
slots[5]ten ArrayIndexOutOfBoundsException yakalayıp blocked, sonra after görebilirsiniz. slots[0]u try içinde tutup catch atlanmış halde 2, sonra after görebilirsiniz. Guard.java derleyin ve tutulan her demo için sırayla java Guard çalıştırın. Catch adı kötü indeks duruşuyla eşleşti. Sonraki sayfa throwing’dir; bilerek duruş yaratırsınız.
İşlenmiş yol için catch demosunu tutun. Catch’i sessizce atlamak için güvenli try’ı tutun. Elle throwu bu sayfadan uzak tutun. Bu üç alışkanlık ilerlemeden önceki kontrol noktasıdır. java Guardın kötü indeks çalışmasından sonra önce blocked sonra after görününce try ve catch bu ders için işlerini bitirmiştir ve throwing hakkındaki sonraki konuya hazırsınız.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek