Rumah >Java >javaTutorial >Blok percubaan bersarang

Blok percubaan bersarang

Susan Sarandon
Susan Sarandonasal
2024-10-19 14:09:31929semak imbas

Blocos try aninhados

Blok percubaan bersarang:

Blok percubaan boleh diletakkan di dalam blok percubaan lain.
Jika pengecualian tidak ditangkap dalam blok percubaan dalam, ia akan disebarkan ke blok percubaan luar.

Penyebaran pengecualian:
Apabila pengecualian berlaku dalam blok dalam dan tidak dikendalikan olehnya, ia boleh ditangkap oleh blok luar, membolehkan program diteruskan atau ditamatkan dengan cara terkawal.

Kod contoh dengan percubaan bersarang:
Contoh berikut menunjukkan blok percubaan dalam yang mengendalikan pembahagian dengan ralat sifar, manakala blok percubaan luar mengendalikan pengecualian akses di luar sempadan tatasusunan.

Contoh kod:

// Usa um bloco try aninhado.
class NestTrys {
    public static void main(String args[]) {
        // O array numer é mais longo que denom.
        int numer[] = { 4, 8, 16, 32, 64, 128, 256, 512 };
        int denom[] = { 2, 0, 4, 4, 0, 8 };

        try { // Bloco try externo
            for (int i = 0; i < numer.length; i++) {
                try { // Bloco try aninhado
                    // Tenta realizar a divisão
                    System.out.println(numer[i] + " / " + denom[i] + " is " + numer[i] / denom[i]);
                } catch (ArithmeticException exc) {
                    // Captura exceção de divisão por zero
                    System.out.println("Can't divide by Zero!");
                }
            }
        } catch (ArrayIndexOutOfBoundsException exc) {
            // Captura exceção de acesso fora dos limites do array
            System.out.println("No matching element found.");
            System.out.println("Fatal error - program terminated.");
        }
    }
}

Keluaran program:
Apabila pembahagian dengan sifar berlaku, pengecualian ditangkap oleh blok percubaan dalaman dan program diteruskan.
Apabila ralat indeks berlaku di luar sempadan tatasusunan, blok percubaan luar menangkap pengecualian dan menamatkan atur cara.~

Contoh output:

4 / 2 is 2
Can't divide by Zero!
16 / 4 is 4
32 / 4 is 8
Can't divide by Zero!
128 / 8 is 16
No matching element found.
Fatal error – program terminated.

Penggunaan praktikal:

  • Sekatan percubaan bersarang membenarkan pelbagai jenis ralat dikendalikan secara berasingan:
  • Ralat yang lebih kecil (seperti pembahagian dengan sifar) boleh dikendalikan secara setempat, membolehkan program diteruskan.
  • Ralat yang lebih serius (seperti akses di luar sempadan tatasusunan) boleh ditangkap oleh blok luaran, yang membawa kepada tindakan yang lebih drastik, seperti penamatan program.

Kesimpulan:

  • Menggunakan blok percubaan bersarang berguna apabila kategori ralat yang berbeza perlu dikendalikan dengan cara yang berbeza.
  • Ini membolehkan lebih fleksibiliti dalam mengawal aliran pelaksanaan program, membolehkan anda mengendalikan pengecualian ringan secara dalaman dan meninggalkan pengecualian teruk untuk blok luaran.

Atas ialah kandungan terperinci Blok percubaan bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn