JavaRush /Blog Jawa /Random-JV /Pangecualian lan penanganane
articles
tingkat

Pangecualian lan penanganane

Diterbitake ing grup
Pangecualian utawa kahanan sing luar biasa (negara) yaiku kesalahan sing kedadeyan ing program sajrone operasi. Kabeh pangecualian ing Jawa minangka obyek. Mulane, bisa digawe ora mung kanthi otomatis nalika ana kahanan sing luar biasa, nanging uga digawe dening pangembang dhewe. Hierarki kelas pangecualian: Pangecualian lan penanganan - 1Pengecualian dipérang dadi sawetara kelas, nanging kabeh duwe leluhur sing padha - kelas Throwable. Turunane yaiku subkelas Exceptionlan Error. Pengecualian ( Exceptions) minangka asil saka masalah ing program sing, ing prinsip, bisa dipecahake lan bisa diprediksi. Contone, divisi dening nol dumadi ing integer. Kesalahan ( Errors) masalah luwih serius sing specification Jawa nyatakake yen sampeyan ora kudu nyoba kanggo nangani ing program dhewe amarga iku masalah JVM-tingkat. Contone, pangecualian saka jinis iki kedadeyan yen memori sing kasedhiya kanggo mesin virtual wis entek. Program kasebut isih ora bisa menehi memori tambahan kanggo JVM. Ing Jawa, kabeh pangecualian dipérang dadi telung jinis: pangecualian sing dicenthang ( checked) lan pangecualian sing ora dicenthang ( unchecked) kang kalebu kasalahan ( Errors) lan pangecualian run-time ( RuntimeExceptionsturunan kelas Exception). Pangecualian sing dikontrol minangka kasalahan sing bisa lan kudu ditangani ing program; kabeh turunan saka kelas Exception(nanging ora RuntimeException) kalebu jinis iki. Penanganan pangecualian bisa ditindakake kanthi nggunakake operator try…catchutawa ditransfer menyang bagean njaba program. Contone, cara bisa ngliwati pangecualian sing dumadi ing luwih dhuwur ing hirarki telpon tanpa nangani dhewe. Pangecualian sing ora dicenthang ora mbutuhake penanganan, nanging sampeyan bisa nangani pengecualian kelas yen sampeyan pengin RuntimeException. Ayo ngumpulake lan mbukak program ing ngisor iki:
class Main {
     public static void main(String[] args) {
         int a = 4;
         System.out.println(a/0);
     }
}
Nalika diluncurake, pesen ing ngisor iki bakal ditampilake ing console:
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Main.main(Main.java:4)
Pesen nuduhake kelas pangecualian sing dumadi - ArithmeticException. Pangecualian iki bisa ditangani:
class Main {
     public static void main(String[] args) {
         int a = 4;
         try {
              System.out.println(a/0);
         } catch (ArithmeticException e) {
              System.out.println("Произошла недопустимая арифметическая операция");
         }
     }
}
Saiki, tinimbang pesen kesalahan standar, blok bakal dieksekusi catch, parameter kasebut minangka obyek e saka kelas sing cocog karo pangecualian (obyek kasebut bisa diwenehi jeneng apa wae, bakal dibutuhake yen kita pengin mbuwang kanthi kuat. istiméwa iki maneh, contone, supaya dicenthang sawetara handler liyane). Ing kasus iki, pamblokiran tryngemot fragmen program ing ngendi pangecualian bisa kedadeyan. Siji trybisa cocog karo sawetara pamblokiran nyekel karo kelas pangecualian beda.
import java.util.Scanner;
class Main {
    public static void main(String[] args) {
     int[] m = {-1,0,1};
        Scanner sc = new Scanner(System.in);
        try {
            int a = sc.nextInt();
            m[a] = 4/a;
            System.out.println(m[a]);
        } catch (ArithmeticException e) {
            System.out.println("Произошла недопустимая арифметическая операция");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Обращение по недопустимому индексу массива");
        }
    }
}
Yen, sawise ngluncurake program sing ditampilake, pangguna mlebu saka keyboard 1 utawa 2, program kasebut bakal mbukak tanpa nggawe pangecualian. Yen pangguna ngetik 0, pangecualian saka kelas bakal kedadeyan ArithmeticExceptionlan bakal ditangani dening blok pertama catch. Yen pangguna mlebu 3, pangecualian kelas bakal kedadeyan ArrayIndexOutOfBoundsException(susun metu saka wates), lan bakal diproses dening blok kapindho catch. Yen pangguna ngetik nomer non-integer, contone, 3.14, pangecualian kelas bakal kelakon InputMismatchException(jinis input mismatch), lan bakal di buwang ing format kesalahan standar, awit kita ora nangani ing sembarang cara. Sampeyan bisa, Nanging, nambah handler kanggo kelas Exception, wiwit kelas iki kelas induk kanggo kabeh pangecualian dicenthang liyane, bakal nyekel samubarang mau (kalebu InputMismatchException).
import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        int[] m = {-1,0,1};
        int a = 1;
        Scanner sc = new Scanner(System.in);
        try {
            a = sc.nextInt();
            m[a-1] = 4/a;
            System.out.println(m[a]);
        } catch (ArithmeticException e) {
            System.out.println("Произошла недопустимая арифметическая операция");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Обращение по недопустимому индексу массива");
        } catch (Exception e) {
            System.out.println("Произошло ещё Howое-то исключение");
        }
    }
}
Wiwit pengecualian dibangun ing hirarki kelas lan subkelas, sampeyan kudu nyoba nangani pengecualian sing luwih spesifik lan mung sing luwih umum. Yaiku, yen kita nyelehake blok kasebut kanthi nangani pangecualian kelas dhisik (lan ora katelu) Exception, kita ora bakal bisa ndeleng pesen kesalahan liyane saka "Sawetara pangecualian liyane wis kedadeyan" (kabeh pangecualian bakal langsung kejiret dening blok iki lan ora bakal tekan ngaso). Tambahan opsional kanggo pamblokiran try…catchbisa dadi pamblokiran finally. Printah sing diselehake ing bakal kaleksanan ing kasus apa wae, preduli saka pangecualian ana utawa ora. Sanajan kasunyatane yen ana pangecualian sing ora ditangani, bagean saka program sing isih ana sawise nggawe pengecualian iki ora dieksekusi. Contone, yen ana pangecualian sajrone sawetara petungan sing dawa, finallysampeyan bisa nuduhake utawa nyimpen asil penengah ing blok. Link menyang sumber: Pangecualian lan penanganan
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION