JavaRush /Java Blogu /Random-AZ /Java yığını izi
IvanDurov
Səviyyə

Java yığını izi

Qrupda dərc edilmişdir
Java Virtual Maşını (bundan sonra JVM adlandırılacaq) kodu emal edir və metoddan başlayaraq metodları bir-birinin ardınca işə salır main. Növbəti metoda çatdıqda bu metodun yığının yuxarı hissəsində olduğunu bildirir. Metod tam icra edildikdən sonra o, yığından çıxarılır və növbədəki növbətisi ilə əvəz olunur. Prinsipi nümayiş etdirmək üçün bu kodu yazın: Java yığını izi - 1
package errorhandling;

public class errorChecking {
    public static void main(String[] args) {
        System.out.println("Метод Main успешно запущен");
        m1();
        System.out.println("Метод Main заканчивает свою работу");
    }

    static void m1() {
        System.out.println("Первый метод передаёт привет!(m1)");
        m2();
    }

    static void m2() {
        System.out.println("Второй метод передаёт привет(m2)");
    }
}
Üç üsulumuz var: üsul main, üsul m1və üsul m2. Proqram başlayanda metod yığının yuxarı hissəsində yerləşir main. Metodun içərisində mainmetod deyilir m1. Çağırılanda o, yığının başına tullanır. Metod m1öz növbəsində m2. İndi üsul m2yığının yuxarı hissəsinə sıçrayır, müvəqqəti olaraq silinir m1. Bunu bir anlıq təsəvvür edin - mainyuxarıda m1və yuxarıda m2! İşini gördükdən sonra m2sona çatır və nəzarət geri qayıdır m1. Metod m1tamamlandıqdan sonra yığından çıxarılır və idarəetmə yenidən metoda verilir main. Proqramınızı işə salın və çıxış pəncərəsinə baxın: Əsas metod uğurla işləyir Birinci üsul salam deyir!(m1) İkinci üsul salam deyir(m2) Əsas metoddan çıxır Metodda bir şey səhv olarsa m2, JVM (Java Virtual Maşın) ), xatırlayırsınız, elə deyilmi?) səhv idarəçilərini axtaracaq, məsələn, blok try … catch. Səhv idarəedici metodunda heç bir səhv yoxdursa , istisna metodu idarə edə biləcəyi ümidi ilə m1metoda ötürüləcəkdir . m1Əgər burada səhv idarəedicisini aşkar etməzsə, istisna yenidən yığında yuxarıya, bu dəfə metoda keçəcək main. Metod mainistisnanı tutmazsa, çıxış pəncərəsində çap olunan qəribə bir səhv mesajı alacaqsınız. Nümunə olaraq, metodunuzu m2belə görünsün:
static void m2() {
    int x = 10;
    int y = 0;
    double z = x / y;
    System.out.println( z );
    System.out.println("Method Two - m2");
}
Bu üsul sıfıra bölgüdən ibarətdir. Proqramın tam versiyası budur, özünüzü yoxlayın:
package errorhandling;

public class errorChecking {
    public static void main(String[] args) {
        System.out.println("Метод Main успешно запущен");
        m1();
        System.out.println("Метод Main заканчивает свою работу");
    }

    static void m1() {
        System.out.println("Первый метод передаёт привет!(m1)");
        m2();
    }

    static void m2() {
        int x = 10;
        int y = 0;
        double z = x / y;
        System.out.println( z );
        System.out.println("Method Two - m2");
    }
}
Proqramı işə salın və çıxış pəncərəsinin sizə nə verdiyini görün: Əsas metod uğurla işlədi Birinci üsul salam deyir!(m1) "main" java.lang.ArithmeticException mövzusunda istisna: / errorhandling.errorChecking.m2(<u) ünvanında sıfırla >errorChecking. java:17</u>) errorhandling.errorChecking.m1(<u>Solution.java:11</u>) ünvanında errorhandling.errorChecking.main(<u>>Solution.java:5</u) >) Çıxış kodu ilə tamamlanan proses 1 Siz yığın izi deyilən bir şeyə baxırsınız. Mavi rənglə vurğulanmış üç sətir üsullarınıza aiddir və onları burada tapa bilərsiniz: Name_пакета.Name_класса.Name_метода Yuxarıdakı ilk sətir xətanın baş verdiyi yerdir - metodda m2. ArithmeticExceptionJava , sıfır xəta ilə bölməni tutacaq şəkildə idarə olunmasını təmin etdi . m2, m1və üsullarında mainsəhv idarəedici yoxdur . Beləliklə, proqram onu ​​standart səhv idarəedicisi ilə emal etdi. Metodunuzu m1aşağıdakı kimi dəyişdirin:
try {
    System.out.println("Первый метод передаёт привет!(m1)");
    m2( );
}
catch (ArithmeticException err) {
    System.out.println(err.getMessage());
}
m2İndi metodu bir bloka bükdük try. Qismən catchbiz yığın izində aşkar edilmiş istisna növündən istifadə edirik - ArithmeticException. Kodu yenidən işə salın və çıxış pəncərəsində aşağıdakıları görəcəksiniz: Əsas metod uğurla işlədi Birinci üsul salam deyir!(m1) / sıfırla Əsas metoddan çıxır Diqqət yetirin ki, xəta mesajı belə çap edilib: " / sıfıra " . Metod m2tam yerinə yetirilmədi, lakin xəta baş verdikdə dayandırıldı. İdarə daha sonra geri köçürüldü m1. Bu, blokun özü səhvi tanıması səbəbindən baş verdi catch; JVM standart səhv idarəedicisi ilə əlaqə qurmadı, lakin blokun əyri mötərizələri arasında yerləşən bir mesaj göstərdi catch. Nəzərə alın ki, proqramın özü dayandırılmayıb. Nəzarət, həmişə olduğu kimi, çağırıldığı üsula mainkeçdi m1. Metodun son sətri isə " Əsas metodu bitirmain " i göstərə bildi . Bu, çox, çox vacibdir. Sizə dəyər lazım idisə , sonrakı iş üçün haradasa . Əgər dəyər yoxdursa, proqramınız heç gözlədiyiniz kimi işləməyə bilər. Çıxış pəncərəsində yığın izini gördükdə, sadəcə bilin ki, birinci sətir problemin baş verdiyi yerdir, qalan sətirlər isə (əgər hər hansı varsa, əlbəttə ki) istisnanın yığına yayıldığı yerdir, adətən . homeandlearn.co.uk- dan tərcümə Biz təşəkkür edirik: Sergey Sysoev, Treefeed... m1mainmain
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION