Contoh artikel ini menceritakan penggunaan pengobatan abnormal java. Bagikan untuk semua orang untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Mekanisme pemrosesan yang abnormal dari Java dapat membantu kita menghindari atau memproses kesalahan yang mungkin terjadi dalam program, sehingga program tidak akan berakhir secara tak terduga ketika menghadapi beberapa kesalahan pemulihan. kode untuk memeriksa situasi kesalahan, yang meningkatkan keterbacaan dan logika kode. Di Java, kelainan mewakili objek entitas yang salah.
Abnormalitas dapat dibagi menjadi dua kategori; Biasanya program kesalahan itu sendiri tidak dapat dipulihkan, dan pelaksanaan program perlu terganggu; Kesalahan ini umumnya dapat dipulihkan tanpa mempengaruhi pengoperasian program.
Kita dapat menggunakan Coba, Catch, akhirnya kata kunci untuk menangkap kelainan.
1. Coba, tangkap
Masukkan pernyataan abnormal di blok {}, dan kemudian tangkap di blok pernyataan Catch {}. Jika Anda dibagi dengan 0:
Public Class SimpleDeMo {// kecuali Devision int statis public (int a, int b) {return a/b;} public static void main (string [] args) demo.devision (5, 0); "Exception");} catch (Exception e) {e.printstacktrace ();} system.out.println ("finish");Hasil Eksekusi:
Dapat dilihat bahwa hasil akhir dicetak, menunjukkan bahwa program tidak berakhir karena kesalahan yang dihapus oleh 0.
Pada saat yang sama, kami juga menemukan bahwa pernyataan Systerm.out.println di bawah SimpleDemo.devision () yang terjadi secara tidak normal tidak dieksekusi. Setelah abnormal terjadi, program akan melompat keluar dari posisi saat ini tanpa melakukan kalimat di balik kelainan.
2. Akhirnya
Pernyataan dalam blok pernyataan akhirnya akan dieksekusi apakah kelainan terjadi atau tidak.
Beberapa orang mungkin bertanya, karena kalimat di blok akhir akan dieksekusi apakah kelainan terjadi atau tidak, efek praktis apa yang akhirnya dimiliki ini? Tidak bisakah saya menulisnya langsung di luar?
Seperti yang ditunjukkan di atas, kami menambahkan pengembalian di blok pernyataan tangkapan:
Public Class SimpleEmo {// kecuali divisi int statis public (int a, int b) {return a/b;} public static void main (string [] args) demo.division (5, 0); "Exception");} Catch (Exception e) {E.PrintStackTrace () );}}Pada saat ini, finish di luar akhirnya tidak dicetak, dan final di dalam akhirnya dicetak.
Akhirnya sangat berguna dalam pengembangan aktual. Sebagai contoh, kami membuka database yang terjadi selama data baca dan tulis database, jadi saat ini kami harus mematikan koneksi database dan melepaskan sumber daya yang sesuai. Pada saat ini, adalah yang paling cocok untuk menulis kode yang melepaskan sumber daya di blok akhirnya.
Tetapi perlu dicatat bahwa blok akhirnya tidak akan dieksekusi dalam satu kasus. Jika program keluar sebelum pelaksanaan blok akhirnya, seperti memanggil metode System.exit (), blok akhirnya tidak akan mendapatkan kesempatan untuk dieksekusi.
3. Kelainan putus sekolah
Jika akan ada kelainan dalam suatu metode, tetapi kami tidak ingin berurusan dengan kelainan ini secara langsung dalam metode ini, tetapi untuk membiarkan penelepon metode diproses, kami dapat menggunakan kata kunci lemparan untuk menyatakan metode ini untuk melempar pengecualian . Ini sangat umum dalam fungsi API yang disediakan oleh Sun, seperti metode baca di java.io.reader dinyatakan untuk melempar pengecualian ioException:
Baca int publik
Pada saat ini, ketika kita memanggil metode baca, kita harus meletakkannya di blok pernyataan coba untuk penangkapan abnormal, jika tidak, kompiler akan melaporkan kesalahan dan memaksa kita untuk melakukan penangkapan abnormal.
Tentu saja, jika kita tidak ingin menangani kelainan saat menelepon membaca, kita juga dapat menyatakan metode menyebut metode baca sebagai lemparan ioException, sehingga kelainan akan dibuang lagi. Jika kami menyatakan pengecualian pengecualian dalam fungsi utama, maka informasi abnormal pada akhirnya akan ditangkap oleh JVM, dan hasil pemrosesan dari pemrosesan JVM adalah untuk mencetak informasi abnormal dan kemudian mengakhiri operasi program.
4. Arsitektur pengobatan abnormal
Semua kelas abnormal berasal dari kelas pengecualian. Ini berarti bahwa jika kita tidak yakin jenis kelainan apa yang akan terjadi, kita dapat secara langsung menyatakan objek pengecualian secara langsung dalam tangkapan untuk menangkap pengecualian semua kelas pengecualian dan subkelasnya. Tapi perhatikan urutan tangkapan. Jika ada beberapa tangkapan di balik satu percobaan dan tangkapan pertama dinyatakan oleh objek pengecualian, maka pengecualian ini akan secara langsung diperlakukan oleh tangkapan pertama, dan tangkapan yang lebih baru tidak dapat menangkap kelainan ini. Kesalahan ini akan menyebabkan kesalahan saat menyusun. Sebagai berikut: di bawah ini:
Public Class CatchDemo {// kecuali untuk divisi int statis public (int a, int b) {return a/b;} public static void main (string [] args) {trydemo.div.div ision (4,0);} Catch (Exception e) {System.out.println ("Kelas Pengecualian");} Catch (ArithMeticException e) {System.out.println ("Kelas Arithmetiception");ArithmeticException output kompiler telah ditangkap, yang berarti bahwa pengecualian di atas telah menangkap kelainan ini tanpa penangkapan berulang.
Apa yang akan terjadi jika kedua tangkapan ini terbalik?
Public Class CatchDemo {// kecuali untuk divisi int statis public (int a, int b) {return a/b;} public static void main (string [] args) {trydemo.div.div ision (4,0);} Catch (ArithMeticException e) {System.out.println ("Kelas ArithMeticException");} catch (Exception e) {System.out.println ("Kelas Pengecualian");Pada saat ini kami menemukan bahwa kode melewati kompilasi, dan hasilnya adalah hasil dari ArithMeticException.
Diharapkan bahwa artikel ini bermanfaat untuk desain program Java semua orang.