cari
RumahJavajavaTutorialMengapakah coretan kod menghasilkan output \'132Exception dalam utas utama MyExc1\' walaupun fakta bahawa pengecualian MyExc2 dilemparkan ke dalam blok tangkapan?

Why does the code snippet produce the output

Pengendalian Pengecualian dalam Tangkapan dan Akhirnya Dihalang

Dalam tugasan Java universiti baru-baru ini, seorang pelajar menemui coretan kod berikut dan diminta untuk meramalkan outputnya:

<code class="java">class MyExc1 extends Exception {}
class MyExc2 extends Exception {}
class MyExc3 extends MyExc2 {}

public class C1 {
    public static void main(String[] args) throws Exception {
        try {
            System.out.print(1);
            q();
        }
        catch (Exception i) {
            throw new MyExc2();
        }
        finally {
            System.out.print(2);
            throw new MyExc1();
        }
    }

    static void q() throws Exception {
        try {
            throw new MyExc1();
        }
        catch (Exception y) {
        }
        finally {
            System.out.print(3);
            throw new Exception();
        }
    }
}</code>

Apabila pelajar menjawab dengan "13Exception dalam utas utama MyExc2," mereka terkejut apabila mengetahui bahawa jawapan yang betul ialah "132Exception dalam thread utama MyExc1."

Memahami Penyebaran Pengecualian dalam Tangkapan dan Akhirnya Blok

Untuk memahami output yang betul, adalah penting untuk memahami gelagat pengecualian dalam tangkapan dan akhirnya menyekat. Mengikut mekanisme pengendalian pengecualian Java:

  1. Apabila pengecualian dilemparkan dalam tangkapan atau akhirnya blok yang akan disebarkan keluar dari blok itu, pengecualian semasa secara automatik dibatalkan dan dilupakan.
  2. Pengecualian baharu mula membuka timbunan, mematuhi sebarang tangkapan atau akhirnya menyekat sepanjang jalan.
  3. Terutamanya, pengecualian baharu yang dilemparkan dalam blok tangkapan masih tertakluk pada blok akhirnya tangkapan itu, jika ada.
Pengecualian dilemparkan dalam kaedah q dan ditangkap oleh blok tangkapan di utama.

Dalam blok tangkapan, pengecualian baharu, MyExc2, tercampak. Ini membatalkan pengecualian asal, MyExc1.

Pengecualian MyExc2 disebarkan keluar dari blok tangkapan dan ke dalam blok akhirnya.

Blok akhirnya mencetak "2." Walau bagaimanapun, sebelum keluar daripada kaedah q, blok akhirnya melemparkan pengecualian baharu, yang mula membuka lilitan tindanan.
  • Pengecualian baharu ialah Pengecualian yang tidak ditangkap dalam blok tangkapan kaedah q.
  • Pengecualian Pengecualian merambat keluar dari kaedah q dan ke dalam blok akhirnya dalam kaedah utama.
  • Blok akhirnya dalam cetakan utama "3" dan kemudian membuang pengecualian MyExc1.
  • Pengecualian MyExc1 merambat keluar daripada kaedah utama dan ditangkap oleh mesin maya.
  • Memahami Output
  • Daripada pengesanan ini, kita dapat melihat bahawa:
  • Pengecualian terakhir yang merambat keluar daripada kaedah utama ialah MyExc1.
Surih tindanan termasuk "132," yang sepadan dengan output yang dicetak oleh atur cara.

Oleh itu, output yang betul ialah "132Exception dalam utas utama MyExc1."

Atas ialah kandungan terperinci Mengapakah coretan kod menghasilkan output \'132Exception dalam utas utama MyExc1\' walaupun fakta bahawa pengecualian MyExc2 dilemparkan ke dalam blok tangkapan?. 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
Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Mar 17, 2025 pm 05:46 PM

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Mar 17, 2025 pm 05:45 PM

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Mar 17, 2025 pm 05:44 PM

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Mar 17, 2025 pm 05:43 PM

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Mar 17, 2025 pm 05:35 PM

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan