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:
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 m1
və üsul m2
. Proqram başlayanda metod yığının yuxarı hissəsində yerləşir main
. Metodun içərisində main
metod deyilir m1
. Çağırılanda o, yığının başına tullanır. Metod m1
öz növbəsində m2
. İndi üsul m2
yığının yuxarı hissəsinə sıçrayır, müvəqqəti olaraq silinir m1
. Bunu bir anlıq təsəvvür edin - main
yuxarıda m1
və yuxarıda m2
! İşini gördükdən sonra m2
sona çatır və nəzarət geri qayıdır m1
. Metod m1
tamamlandı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ə m1
metoda ö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 main
istisnanı tutmazsa, çıxış pəncərəsində çap olunan qəribə bir səhv mesajı alacaqsınız. Nümunə olaraq, metodunuzu m2
belə 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
. ArithmeticException
Java , sıfır xəta ilə bölməni tutacaq şəkildə idarə olunmasını təmin etdi . m2
, m1
və üsullarında main
səhv idarəedici yoxdur . Beləliklə, proqram onu standart səhv idarəedicisi ilə emal etdi. Metodunuzu m1
aş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 catch
biz 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 m2
tam 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 main
keç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... m1
main
main
GO TO FULL VERSION