JavaRush /Blog Jawa /Random-JV /Java tumpukan tilak
IvanDurov
tingkat

Java tumpukan tilak

Diterbitake ing grup
Java Virtual Machine (sabanjuré diarani JVM) ngolah kode lan nglakokaké cara siji-sijine, diwiwiti kanthi metode main. Nalika tekan cara sabanjuré, ngandika cara iki ing ndhuwur tumpukan. Sawise cara wis rampung kaleksanan, iku dibusak saka tumpukan lan diganti dening sing sabanjuré ing antrian. Kanggo nduduhake prinsip kasebut, ketik kode iki: Java stack trace - 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)");
    }
}
Kita duwe telung cara: metode main, metode m1lan metode m2. Nalika program diwiwiti, cara kasebut ana ing sisih ndhuwur tumpukan main. Ing salebeting metode menika maindipunsebat metode m1. Nalika diarani, dheweke mlumpat menyang ndhuwur tumpukan. Cara kasebut m1diarani m2. Saiki cara kasebut m2mlumpat menyang ndhuwur tumpukan, mbusak sementara m1. Bayangake iki sedhela - maining ndhuwur m1lan ndhuwur m2! Sawise rampung bisnis, m2mungkasi lan kontrol bali menyang m1. Cara m1, yen wis rampung, uga dibusak saka tumpukan, lan kontrol maneh diwenehi cara main. Jalanake program sampeyan lan deleng jendhela output: Cara utama mlaku kanthi sukses Cara pisanan ngucapake hello!(m1) Cara kapindho ngomong hello(m2) Cara utama metu Yen ana sing salah ing metode m2, JVM (Java Virtual Machine) ), sampeyan elinga, ta?) bakal nggoleki panangan kesalahan, contone blok try … catch. Yen ora ana kesalahan ing m1cara handler kesalahan, pangecualian bakal diterusake menyang metode kasebut m1, kanthi pangarep-arep supaya bisa ngatasi. Yen ora ndeteksi handler kesalahan kene, pangecualian bakal maneh munggah tumpukan, wektu iki kanggo cara main. Yen cara mainora nyekel pangecualian, sampeyan bakal entuk pesen kesalahan aneh sing dicithak ing jendhela output. Minangka conto, gawe cara sampeyan m2kaya iki:
static void m2() {
    int x = 10;
    int y = 0;
    double z = x / y;
    System.out.println( z );
    System.out.println("Method Two - m2");
}
Cara iki ngemot divisi kanthi kesalahan nol. Iki versi lengkap program, priksa karo sampeyan:
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");
    }
}
Mbukak program lan ndeleng apa jendhela output menehi sampeyan: Cara utama mlaku kasil Cara pisanan ngandika hello!(m1) Pangecualian ing thread "utama" java.lang.ArithmeticException: / dening nul ing errorhandling.errorChecking.m2(<u >errorChecking. java:17</u>) ing errorhandling.errorChecking.m1(<u>Solution.java:11</u>) ing errorhandling.errorChecking.main(<u>>Solution.java:5</u >) Proses rampung karo kode metu 1 Sampeyan ndeleng soko disebut tilak tumpukan. Telung garis sing digaris biru nuduhake cara sampeyan, lan bisa ditemokake ing: Name_пакета.Name_класса.Name_метода Baris pisanan saka ndhuwur yaiku ana kesalahan - ing metode m2. Jawa mesthekake yen wis ditangani ing cara ArithmeticExceptionsing kejiret divisi dening nul kasalahan. Ora ana handler kesalahan ing m2, m1lan cara. mainDadi program diproses nganggo panangan kesalahan standar. Ganti cara sampeyan m1menyang ing ngisor iki:
try {
    System.out.println("Первый метод передаёт привет!(m1)");
    m2( );
}
catch (ArithmeticException err) {
    System.out.println(err.getMessage());
}
Saiki kita wis mbungkus metode kasebut m2ing blok try. Sebagean catch, kita nggunakake jinis pangecualian sing dideteksi ing tilak tumpukan - ArithmeticException. Mbukak kode maneh lan sampeyan bakal weruh ing ngisor iki ing jendhela output: Cara Utama mlaku kasil Cara pisanan ngandika hello!(m1) / dening nul Metode utama metu Kabar yen pesen kesalahan wis dicithak minangka: " / dening nol " . Cara kasebut m2ora dieksekusi kanthi lengkap, nanging mandheg nalika ana kesalahan. Kontrol banjur ditransfer maneh m1. Iki kedadeyan amarga pamblokiran catchdhewe ngerteni kesalahan kasebut; JVM ora ngubungi panangan kesalahan standar, nanging nampilake pesen sing ana ing antarane kurung kriting blok kasebut catch. Elinga yen program kasebut dhewe durung mandheg. Kontrol, kaya biasane, pindhah menyang cara mainsing m1diarani. Lan baris pungkasan saka metode kasebut mainbisa nampilake " Metode Utama Akhir ". Iki penting banget. Yen sampeyan perlu nilai saka m1, kanggo karya sakteruse nang endi wae ing main. Lan yen regane ora ana, mula program sampeyan bisa uga ora bisa digunakake kaya sing dikarepake. Nalika sampeyan ndeleng tilak tumpukan ing jendhela output, mung ngerti sing baris pisanan ana masalah, lan garis isih (yen ana mesthi) ngendi pangecualian propagated munggah tumpukan, biasane mungkasi karo main. Terjemahan saka homeandlearn.co.uk Matur nuwun kanggo: Sergei Sysoev, Treefeed...
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION