Yükleniyor...

Java'da istisnalar

2 ve 4 tutan küçük bir int dizisi slots tutun. Ekranın 2 göstermesi için slots[0] yazdırın. Sonra bunun yerine slots[5] isterseniz ne olduğunu öğrenin: Java ArrayIndexOutOfBoundsException fırlatır ve program durur. Önce güvenli dosya için Alarm.java derleyin ve java Alarm çalıştırın. Eksik noktalı virgülden değil, kırık bir kuraldan kaynaklanan çalışma zamanı duruşunu görmek bu sayfanın öğrettikleridir. try ve catchi sonraki sayfaya bırakın.

Bitiren güvenli bir okuma

İstisna, Java'nın program çalışırken bir kuralın kırıldığını söyleme yoludur. Şimdiye kadar çoğu demo net bir satır yazdırıp sessizce biterdi. Bu sayfa önce sessiz bir demo tutar, sonra istisna adıyla duran bir demo tutar.
Alarm.java açın. Dosya adıyla eşleşsin diye genel sınıf adını Alarm tutun. Kalan ArrayList<Integer>, nums.add(9), Crate demolarını ve oak ile pine üzerinde for-each'i silin. Her Scanner veya nextLine çağrısını da silin. Program yazmayı beklememelidir. Bu sayfanın import satırına ihtiyacı yoktur.
main içinde iki tam sayı saklayın:
int[] slots = {2, 4};
Sonra ilk yuvayı yazdırın:
System.out.println(slots[0]);
Yuva numaraları sıfırdan başlar. Sıfır yuvası 2 tutar. Derlemeden önce kaydedin.

Alarm safe slots zero

java
public class Alarm {
    public static void main(String[] args) {
        int[] slots = {2, 4};
        System.out.println(slots[0]);
    }
}

Alarm.java bulunan klasörden javac Alarm.java çalıştırın. Parantezler, süslü parantezler ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Alarm çalıştırın — java Alarm.java değil. Çalıştırma komutundan .java sonunu çıkarın.
Program bir satır yazdırıp durmalıdır: 2. Sizden yazmanızı istememelidir. Terminal klavye girişi bekliyorsa, eski bir alıştırmadan kalan nextLine çağrısı hâlâ bir dosyadadır. O çağrıyı silin ve dizi ile System.out.println(slots[0]); tutun.
Çalışmayı bir kez yürütün. Java Alarm.mainden başlar. Dizide iki değer vardır. Yazdırma sıfır yuvasını okur. Ekran 2 gösterir. Başka bir şey yazdırılmamalıdır. 9 görürseniz hâlâ Crate wrappers demosu çalışıyordur — java Alarma geçin. 4 görürseniz slots[1] yazdırmışsınızdır; güvenli öğretim dosyası slots[0] tutar.

Fırlatan kötü bir indeks

Yalnızca yazdırma satırını değiştirin ki hiç yazılmamış bir yuva istesin: slots[5]. Dizide hâlâ yalnızca iki yuva vardır. Çalışma zamanında Java sayı yazdırmak yerine bir istisna fırlatır.

Alarm bad index throws

java
public class Alarm {
    public static void main(String[] args) {
        int[] slots = {2, 4};
        System.out.println(slots[5]);
    }
}

javac Alarm.java ile derleyin, sonra java Alarm çalıştırın. Bu kez program 2 yazdırmaz. Terminal ArrayIndexOutOfBoundsException adını veren bir hata raporu gösterir. Çalışma durur. O yazdırmadan sonra hayal ettiğiniz satırlar çalışmaz, çünkü istisna programı zaten durdurmuştur. Dikkat edin: javac yine de başarılı olabilir — kötü indeks çalışma zamanı sorunudur, eksik noktalı virgül değil.
O duruş derstir. Bu sayfada indeksi try ile düzeltmezsiniz. Çalışma zamanında kırılan bir kuralın istisna olup normal yolu bitirdiğini tanımayı öğrenirsiniz. Rapordaki istisna adını okuyun. Kötü indeks dosyasını yalnızca o duruşu görmek için tutun. Sessiz ekranda 2 istediğinizde güvenli dosyayı tercih edin. Kötü indeksi yeniden slots[0] yaparsanız sessiz ekran geri gelir; bu, duruşun sınıf adı Alarmdan değil indeksten geldiğini kanıtlar.
Yığın raporunu normal bir println sonucu gibi görmeyin. Java neyin yanlış gittiğini söylüyor. İstisna türünün yazımı hakkında konuşurken önemlidir: ArrayIndexOutOfBoundsException. Yalnızca «hata» demek bu ders için fazla belirsizdir — duruşu anlatırken türün tam adını tutun.

Wrappers artığı bu çöküş değildir

Üçüncü bir dosya önceki sayfanın Integer listesini hatırlatır. O demo 9 yazdırır ve biter. İstisna öyküsü değildir.

Alarm wrappers leftover contrast

java
import java.util.ArrayList;

public class Alarm {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(9);
        System.out.println(nums.get(0));
    }
}

O karşıtlık 9 yazdırır ve fırlatmadan biter. Bunu yalnızca bitmiş wrappers yolunu kötü indeks Alarm yolundan ayırmak için kullanın. Bu istisna dersinde öğretim çifti güvenli slots[0] yazdırması ile fırlatan slots[5] yazdırmasıdır. Bu sayfada dizi demolarının çevresinde hiç try veya catch uydurmayın.

Diziler ve wrappers ile karşılaştırma

Diziler sayfasında yazılmış yuvaların içinde kaldınız. Bu sayfa bilerek dışarı çıkar ki istisnayı görün. Wrappers sayfasında bir Integer listesi çökmeden 9 yazdırıyordu. Bu hâlâ tarihçe olarak geçerlidir. Bu sayfa için Alarm ve dizi indeksi öyküsünü tutun.
Başka istisnalar da vardır — örneğin sıfıra bölmek ArithmeticException fırlatabilir. Bu sayfa tek net ad tutar: kötü indeksten ArrayIndexOutOfBoundsException. Bugün her istisna türünün kataloğuna ihtiyacınız yoktur. Sonraki sayfa işlemeyi öğretmeden önce sağlam bir örnek yeterlidir.
Yakında eski Crate.java dosyaları duruyorsa bırakın veya yalnızca hangi sınıfı çalıştırdığınızı karıştırırlarsa silin. İstediğiniz demonun dosyasını derledikten sonra java Alarm çalıştırın. Çalışırken güvenli yazdırma ile fırlatan yazdırma tek bir mainde karışmasın diye dosyaları bilerek değiştirin.

try ve catch için ne kalır

Bu sayfa bir istisnanın programı çalışma zamanında durdurabileceğini gösterir. Sonraki sayfa bazı sorunları tüm çalışmayı bitirmeden ele alabilmeniz için try ve catch sunar. Burada duruşu ve istisna adını tanımada kalın. Bu sayfada henüz catch bloğunu zorunluluk diye uydurmayın.

try ve catchten önce

{2, 4} içinden slots[0] yazdırıp 2 görebilirsiniz. slots[5] yazdırıp çalışmanın ArrayIndexOutOfBoundsException ile durduğunu görebilirsiniz. Tutulan her demo için sırayla Alarm.java derleyin ve java Alarm çalıştırın. İstisna kırık kuralı açıkça adlandırdı. Sonraki sayfa try ve catchtir; burada işlenen bir yol bazı hatalardan sonra devam edebilir.
Sessiz ekran için güvenli demoyu tutun. Duruşu görmek için kötü indeksi tutun. tryyi bu sayfadan uzak tutun. Bu üç alışkanlık ilerlemeden önceki kontrol noktasıdır. java Alarmın kötü indeks çalışmasından sonra ArrayIndexOutOfBoundsException adlandırabildiğinizde istisnalar bu dersin işini yaptı ve işleme hakkındaki sonraki konuya hazırsınız.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
6
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 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