Ketika saya pertama kali mempelajari penanganan pengecualian Java, saya ingat beberapa kalimat tentang penanganan pengecualian orang tua-anak: "Metode kelas anak hanya dapat melemparkan pengecualian atau pengecualian anak yang dilemparkan oleh metode kelas orang tua, dan konstruktor kelas anak harus melemparkan pengecualian atau pengecualian orang tua dari konstruktor kelas orang tua." Pada saat itu, saya tidak tahu mengapa metode subclass harus melempar pengecualian seperti ini. Kemudian, dengan belajar "berpikir di Jawa", saya memahami kebenaran. Sekarang saya akan memeriksanya.
1. Metode subkelas hanya dapat melemparkan pengecualian metode kelas orang tua atau pengecualian anak mereka.
Untuk keterbatasan ini, ini terutama karena subkelas tidak dapat dengan benar menangkap pengecualian ketika mereka sedang menjalani transformasi ke atas
package thinkinginjava;public abstract class InningDemo1 { public void walk() throws BaseException{} public abstract void sing() throws BaseException;}class BaseException extends Exception{}class SubException1 extends BaseException{}class CupException extends Exception{}Paket ThinkingInjava; Antarmuka Publik Fungsi Lain
package thinkinginjava;public class SubInningDemo1 extends InningDemo1 implements OtherFunction{ //Subclass methods can throw exceptions of parent class method @Override public void walk() throws BaseException{} //But exceptions that are not in the parent class cannot be thrown, otherwise there will be an error in compilation //public void walk() throws Exception{} //Subclass methods can throw child Pengecualian metode kelas induk @Override public void sing () melempar SubException1 {} // Ketika antarmuka dan metode yang diimplementasikan di kelas induk memiliki pengecualian, Anda dapat memilih untuk tidak melempar pengecualian public void Task () {}}Ambil contoh ini sebagai contoh. Jika ada metode ini di subclass public void walk () melempar CupException {}, pengecualian yang tidak dimiliki metode kelas induk. Kami menggunakan referensi kelas orang tua untuk menunjuk ke kelas anak.
public void f () {inningDemo1 inn = new SubinningDemo1 (); inn.walk (); // Ketika kelas induk memanggil metode walk (), tidak tahu bahwa itu akan melempar cupexception, sehingga metode f () tidak tahu bagaimana menangkap pengecualian. Oleh karena itu, selama periode kompilasi, metode subkelas harus dicegah untuk melempar pengecualian secara acak. }Dari contoh di atas, kita juga dapat melihat bahwa metode subclass tidak dapat melempar pengecualian
2. Konstruktor subkelas harus melempar pengecualian atau pengecualian induknya.
Ini karena konstruktor subkelas ditambahkan secara default ke konstruktor kelas induk.
Paket thinkingInjava; kelas abstrak publik inningdemo2 {public inningdemo2 () melempar subexception {}} kelas fatherException memperluas pengecualian {} SubException kelas memperluas fatherException {} kelas penexception memperluas pengecualian {} Paket thinkingInjava; kelas publik SubinningDemo2 meluas inningDemo2 {public SubinningDemo2 () melempar fatherException {// konstruktor kelas induk ditambahkan secara default pada konstruktor subkelas, jadi pengecualian kelas induk atau pengecualian induknya perlu dilemparkan // super (); }}3. Kehilangan abnormal
1. Lemparkan pengecualian akhirnya, pengecualian yang dilemparkan mungkin hilang.
Paket thinkingInjava; kelas publik akhirnya Exception {public static void main (string [] args) {coba {coba {lempar RedException baru (); } akhirnya {// tutupi pengecualian sebelumnya lempar blueException baru (); }} catch (Exception e) {System.out.println (e); }}} class RedException memperluas Exception {} class blueException memperluas Exception {}Hasil Menjalankan: Berpikirinjava.blueexception
2. Gunakan kembali akhirnya, tidak ada pengecualian yang dilemparkan
Paket ThinkingInjava; Public Class ReturnException {public static void main (string [] args) {coba {lempar pengecualian baru (); } akhirnya {return; }}}Kami melihat bahwa itu melempar pengecualian, tetapi tidak akan ada output saat berjalan
Artikel di atas secara singkat membahas penanganan pengecualian Java (penanganan pengecualian ayah-anak) adalah semua konten yang saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.