Fenomena abnormal program Java yang berjalan disebut kesalahan berjalan. Menurut sifatnya, itu dapat dibagi menjadi dua kategori: kesalahan (kesalahan) dan pengecualian (pengecualian); Mereka memiliki kelas orang tua yang umum (juga kelas induk tingkat atas dari semua pengecualian): Throwable.
Struktur kelas pengecualian
Kesalahan
Kesalahan dihasilkan oleh JVM dan ditinggalkan tanpa diproses; Kesalahan seperti itu biasanya tidak terkait dengan kode dan operasi yang dieksekusi, dan merupakan masalah yang relatif serius dalam mesin virtual dan tidak dapat diselesaikan oleh program itu sendiri (kesalahan umum termasuk loop mati, kebocoran memori, dll.).
Kesalahan umum adalah kesalahan mesin virtual Java (VirtualMachineError). Ketika JVM tidak lagi memiliki sumber daya memori yang diperlukan untuk melanjutkan operasi, outofmemoryError akan muncul. Ketika pengecualian ini terjadi, Java Virtual Machine (JVM) umumnya memilih untuk mengakhiri utas.
Pengecualian
Pengecualian digunakan sebagai objek dan dibuang atau diproses oleh program Java; Biasanya penyebab pengecualian adalah: kode atau kode panggilan tidak benar, sumber daya sistem operasi tidak tersedia, dan perpustakaan runtime bahasa umum menghadapi kecelakaan;
Pengecualian dibagi menjadi pengecualian runtime yang dihasilkan oleh mesin virtual (runtimeeException, seperti pointer nol, array di luar batas) dan pengecualian non-runim yang disebabkan oleh kecelakaan program (seperti ioException);
Pengecualian Runtime: Program dapat memilih untuk menangkap dan memproses atau melemparkannya langsung tanpa memproses; Pengecualian runtime umum termasuk overflow algoritma (melebihi rentang ekspresi numerik), pembagi adalah nol, memori overflow, pointer nol, parameter yang tidak valid, dll. Pengecualian seperti itu adalah kesalahan pemrograman dalam program itu sendiri. Anda dapat menyesuaikan arah berjalan kode pengecualian untuk menjaga program tetap berjalan sampai berakhir secara normal;
Pengecualian Non-Runtime: Pengecualian yang tidak terduga dari jenis runimeException disebut pengecualian non-runtime. Dari perspektif sintaks program, mereka adalah pengecualian yang harus diproses. Jika tidak diproses, program tidak dapat dikompilasi dan disahkan; Pengecualian non-runtime yang umum termasuk IOException, seperti: file sumber daya tidak dapat ditemukan, dll., Yang berarti bahwa program tersebut tidak dapat dijalankan dengan sukses saat menghadapi situasi yang tidak terduga.
Catatan: Perbedaan antara pengecualian dan kesalahan-kecuali dapat ditangani oleh program itu sendiri, tetapi kesalahan tidak dapat ditangani.
Pengecualian yang dapat diperiksa dan bukan pengecualian yang dapat diperiksa
Pengecualian Java (ERRORDANCExceptions) dapat dibagi menjadi dua kategori lain sesuai dengan apakah program dapat dikompilasi dan dilewati: pengecualian yang diperiksa dan pengecualian yang tidak dicentang.
Dapat memeriksa pengecualian
Pengecualian dapat diperiksa: sesuai dengan pengecualian non-runim, kompiler dapat memeriksa kesalahan yang diharapkan saat menyusun program. Pengecualian ini harus ditangani. Ada dua cara untuk menghadapinya: Pernyataan mencoba-tangkapan menangkap pengecualian atau klausa lemparan menyatakan melempar pengecualian, dan jenis pengecualian dinyatakan di luar header metode (menggunakan pengecualian lemparan) dan penelepon dapat memilih untuk menangani pengecualian yang diterima.
Berbicara tentang dua cara penanganan ini, kita perlu berbicara tentang 5 kata kunci penanganan pengecualian Java: coba, tangkap, akhirnya, lempar, lempar
1. Gunakan Pernyataan Coba-Catch untuk memproses penangkapan (header metode tidak perlu dinyatakan)
Tiga blok pernyataan mencoba, menangkap, dan akhirnya tidak dapat muncul sendirian. Ketiganya dapat digabungkan menjadi try-catch/try-catch-final/try-final.
Mungkin ada beberapa blok tangkapan, dan pada saat ini, salah satu kode blok tangkapan hanya dapat dicocokkan dari atas ke bawah;
Akhirnya, paling banyak satu variabel tidak dapat diakses satu sama lain di tiga blok pernyataan.
Di bagian ini, kombinasi coba-tangkapan digunakan untuk menangani pengecualian yang dapat diperiksa, melempar pengecualian ke atas, contoh:
publik xmlreaderhdu (string xmlfile) {super (); this.xmlfile = xmlfile; this.fileName=StaticConfig.umlPathPrefixHDU;try {SAXReader reader=new SAXReader();Document dom=reader.read(xmlFile);root=dom.getRootElement();}catch(Exception e1) {Handle1…}catch(Exception e2) {Handle1…}}2. Gunakan klausa lemparan untuk menyatakan lemparan (nyatakan tipe pengecualian di kepala di luar badan metode: gunakan lemparan untuk melempar pengecualian)
Pertama, gunakan lemparan di dalam tubuh metode untuk melempar pengecualian;
Kemudian, metode ini dinyatakan di luar kepala dan melempar pengecualian yang dilemparkan ke dalam menggunakan lemparan;
Contoh 1: Coba-catch melempar pengecualian
PUBLIK XMLREADERHDU (String XMLFILE) melempar Exception {super (); this.xmlfile = xmlfile; this.fileName = staticconfig.umlPathPrefixHdu; coba {saxreader reader = baru saxreader (); dokumen dom = reader.read (xmlfile); root = dom.getrootelement ();} catch (pengecualian e1) {throw exception baru (e1);Contoh 2: Pengecualian Kustom Throw-Throws
Daftar Pribadi <Suecase> readucInformation () melempar Exception {if (e1.hascontent ()) {if (e1.element ("name"). getText (). Equals ("Precondition")) {uC.setPrecondition (e1.elementText ("Content"));} {uc.setprecondition (e1.elementText ("content"));} lain kesalahan ");}}}Tidak dapat memeriksa pengecualian
Pengecualian yang tidak dapat diperiksa: Termasuk kesalahan kesalahan dan pengecualian runtime runimeException
Pengecualian runtime dapat dilewati selama kompilasi program. Itu tidak dapat dideteksi melalui sintaks statis yang berfungsi dapat memberikan pengecualian. Hanya ketika pengecualian ditemukan (yaitu, tergantung pada keadaan runtime, itu ditentukan oleh status runtime);
Anda dapat memilih untuk menangkap pemrosesan atau tampilan yang dilemparkan (MustBaToughtordeclearedtoBethrown). Pengecualian ini umumnya disebabkan oleh kesalahan logika program, dan program harus menghindari pengecualian sebanyak mungkin dari perspektif logis.
Meringkaskan
Di atas adalah semua tentang analisis pengetahuan dasar pengecualian Java dalam artikel ini, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!