Di Java, semua pengecualian memiliki nenek moyang yang sama, dapat dilemparkan (dapat dilempar). Throwable Menentukan kesamaan dari setiap masalah yang dapat ditransmisikan melalui aplikasi Java dalam kode dengan mekanisme propagasi pengecualian.
Throwable memiliki dua subclass penting: pengecualian dan kesalahan. Keduanya adalah subclass penting untuk penanganan pengecualian Java, dan masing -masing berisi sejumlah besar subclass.
①. Eksepsi adalah masalah yang dapat diprediksi dan dapat dipulihkan dalam aplikasi. Secara umum, sebagian besar kelainan menunjukkan masalah sedang hingga ringan. Pengecualian umumnya dihasilkan di lingkungan tertentu dan biasanya terjadi dalam metode dan operasi kode tertentu. Di kelas Echoinput, iOException dapat terjadi ketika mencoba memanggil metode Readline.
Kelas pengecualian memiliki subclass penting, runtimeException. Kelas RunimeException dan subclass -nya mewakili kesalahan yang ditimbulkan oleh "Operasi JVM Umum". Misalnya, jika Anda mencoba menggunakan referensi objek nol, pembagi nol atau array di luar batas, pengecualian runtime (nullpointerException, ArithMeticException) dan ArrayIndexoutOfBoundException masing -masing dinaikkan.
②.Ror menunjukkan masalah serius dalam menjalankan aplikasi. Sebagian besar kesalahan tidak terkait dengan tindakan yang dilakukan oleh penulis kode, tetapi mewakili masalah dengan JVM (Java Virtual Machine) ketika kode dijalankan. Misalnya, ketika JVM tidak lagi memiliki sumber daya memori yang diperlukan untuk melanjutkan operasi, outofmemoryError akan muncul.
Divisi antara memeriksa pengecualian dan tidak memeriksa pengecualian
Pengecualian di Java dibagi menjadi dua kategori:
1. Pengecualian yang Dipahami (Pengecualian Non-Runtime)
2. Exception (pengecualian runtime)
Pengecualian runtime
Kelas RunimeException adalah subkelas dari kelas pengecualian. Ini disebut pengecualian runtime. Semua pengecualian runtime di Java akan diwarisi secara langsung atau tidak langsung dari kelas RunimeException.
Pengecualian apa pun di Java yang mewarisi dari pengecualian tetapi tidak dari runtimeException adalah pengecualian non-runim.
Percobaan dapat diikuti oleh banyak tangkapan, tetapi tidak peduli berapa banyak, paling banyak satu blok tangkapan akan dieksekusi.
Untuk pengecualian non-runtime, mereka harus diproses, jika tidak mereka tidak dapat dikompilasi.
Ada dua cara untuk menghadapinya:
1. Gunakan cobalah..catch..daya untuk menangkap;
2. Tulis tipe pengecualian yang melempar setelah deklarasi metode yang menghasilkan pengecualian, seperti lemparan pengecualian, lempar pengecualian ke lapisan luar.
Untuk pengecualian runtime, mereka dapat diproses atau tidak. Disarankan untuk tidak menangani pengecualian runtime.
Ekstensi: Perbedaan antara kesalahan dan pengecualian (ERROR vs Exception)
1) .java.lang.Error: Subkelas yang dapat dilemparkan, digunakan untuk menandai kesalahan kritis. Aplikasi yang masuk akal tidak boleh mencoba/menangkap kesalahan. Sebagian besar kesalahan tidak normal dan tidak boleh terjadi sama sekali.
Java.lang.Exception: Subclass dari Throwable, digunakan untuk menunjukkan program yang masuk akal untuk ditangkap. Artinya, ini hanya kondisi yang menjalankan program, bukan kesalahan yang serius, dan program pengguna didorong untuk menangkapnya.
2). Kesalahan dan RuntimeException dan subclass mereka adalah pengecualian yang tidak dicentang, sementara semua kelas pengecualian lainnya diperiksa pengecualian.
Pengecualian yang Diperiksa: biasanya dilemparkan dari program yang dapat dipulihkan, dan sebaiknya dapat pulih dari pengecualian seperti itu menggunakan program. Misalnya, FileNotFoundException, Parseexception, dll. Pengecualian yang diperiksa terjadi pada tahap kompilasi, dan Anda harus menggunakan mencoba ... tangkap (atau lemparan) atau kompilasi tidak akan dilewati.
Pengecualian yang tidak dicentang: Biasanya pengecualian yang seharusnya tidak terjadi jika semuanya normal, tetapi itu memang terjadi. Ini terjadi selama runtime dan memiliki ketidakpastian, terutama disebabkan oleh masalah logis dalam program. Misalnya, ArrayIndExoutOfBoundException, ClassCastException, dll. Dari perspektif bahasa itu sendiri, program tidak boleh menggunakan pengecualian seperti Catch. Meskipun mereka dapat menangkap dan memulihkan dari pengecualian seperti RuntimeException, pemrogram terminal tidak didorong untuk melakukan ini karena tidak perlu melakukannya. Karena jenis kesalahan ini adalah bug itu sendiri dan harus diperbaiki, program harus segera dihentikan ketika kesalahan tersebut terjadi. Oleh karena itu, dalam menghadapi kesalahan dan pengecualian yang tidak dicentang, program harus diakhiri secara otomatis. Pemrogram tidak boleh melakukan hal -hal seperti mencoba/menangkap, tetapi harus mengetahui alasannya dan memodifikasi logika kode.
RuntimeException: Sistem RuntimeException mencakup konversi tipe yang salah, akses array di luar batas, upaya untuk mengakses pointer nol, dll.
Prinsip penanganan runimeException adalah: jika runtimeException terjadi, itu harus menjadi kesalahan programmer. Misalnya, pengecualian akses array di luar batas dapat dihindari dengan memeriksa subskrip array dan batas array. Pengecualian lain (ioException, dll.) Umumnya adalah kesalahan eksternal, seperti mencoba membaca data dari akhir file, dll. Ini bukan kesalahan program itu sendiri, tetapi kesalahan eksternal yang terjadi di lingkungan aplikasi.
Artikel di atas kelas Java_Exception (Pengantar Perbedaan antara Kesalahan dan Pengecualian) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.