Jawa

Pengendalian pengecualian Java

Pengendalian pengecualian Java
Apabila aliran normal pelaksanaan program terganggu untuk sebarang kesalahan, maka ia disebut pengecualian. Jenis acara ini dapat dikendalikan dengan menggunakan cubaan-akhirnya-akhirnya sekatan. Pengecualian adalah objek yang digunakan untuk menangkap kesalahan dan menjalankan pernyataan berdasarkan keadaan ralat yang disebut pengendalian pengecualian. Terutama dua jenis kesalahan ditangani dengan pengendalian pengecualian. Ini adalah masa yang disusun kesalahan dan masa larian kesilapan. The masa larian kesilapan ditangani dengan pengendalian pengecualian. Bagaimana anda dapat menangani pengecualian di Java dijelaskan dalam tutorial ini.

Sintaks:

Sintaks bagi cubaan-akhirnya-akhirnya blok diberikan di bawah.

cuba
pernyataan 1… N

tangkapan (ExceptiontType var)
pernyataan 1… N

akhirnya
pernyataan 1… N

Di sini, jika pengecualian berlaku dalam blok percubaan, maka pengecualian akan dilemparkan ke blok tangkapan, dan blok akhirnya menjadi pilihan di sini. Kod blok akhirnya dilaksanakan sama ada pengecualian berlaku atau tidak.

Contoh-1: Pengendalian pengecualian dengan satu blok tangkapan

Contoh berikut menunjukkan penggunaan pengendalian pengecualian menggunakan blok tangkapan tunggal. Nama fail akan diambil sebagai input dan membuat objek BufferedReader untuk membuka fail untuk dibaca. Sekiranya nama fail ada, maka kandungan fail akan dibaca baris demi baris dan dicetak. Sekiranya fail tidak ada, maka pengecualian akan dihasilkan, dan mesej kesalahan akan dicetak.

import java.io.BufferedReader;
import java.io.Pembaca Fail;
import java.io.IOException;
import java.guna.Pengimbas;
kelas awam kecuali1
utama kekosongan statik awam (String [] args)
// Buat objek Pengimbas
Pengimbas dalam = Pengimbas baru (Sistem.dalam);
Sistem.keluar.cetak ("Masukkan nama fail:");
// Ambil data rentetan dari pengguna
StringName File = dalam.seterusnya ();
cuba
// Buat objek pembaca
Pembaca BufferedReader = BufferedReader baru (FileReader baru (Nama Fail));
// Baca baris pertama jika fail itu ada
Garisan tali = pembaca.readLine ();
sambil (garisan != batal)
// Cetak baris
Sistem.keluar.println (garisan);
// Baca baris seterusnya
baris = pembaca.readLine ();

// Tutup objek pembaca
pembaca.tutup ();
// Tutup objek pengimbas
dalam.tutup ();
tangkapan (IOException e)
// Cetak mesej ralat
Sistem.keluar.println ("Fail tidak wujud");


Pengeluaran:

Dalam output berikut,  hello.txt ' diberikan sebagai nama fail yang tidak ada. Jadi mesej berikut dicetak.

Lain kali, fail1.txt diberikan sebagai nama fail yang ada, dan output menunjukkan kandungan fail.

Contoh-2: Pengendalian pengecualian dengan banyak blok tangkapan

Bagaimana anda boleh menggunakan banyak blok tangkapan untuk menangani beberapa pengecualian ditunjukkan dalam contoh berikut. Di sini, tiga blok tangkapan diisytiharkan. Blok tangkapan pertama akan menangkap kesalahan aritmetik apabila operasi aritmetik tidak logik dilakukan. Bock tangkapan kedua akan menangkap ralat di luar rentang tatkala nilai indeks tatasusunan akan cuba dibaca yang tidak ada. Blok tangkapan ketiga akan menangkap ralat nilai angka apabila mana-mana nilai watak atau rentetan diberikan sebagai nilai array. Dalam kod, array dengan empat indeks dinyatakan dan diinisialisasi dengan nilai integer yang akan diambil dari pengguna. Nilai array dicetak menggunakan gelung. Operasi pembahagian dilakukan di hujung blok cubaan.

import java.guna.Pengimbas;
kelas awam kecuali2
utama kekosongan statik awam (String [] args)

cuba

// Menyatakan array nombor
int num_arr [] = int baru [4];
// Buat objek Pengimbas
Pengimbas dalam = Pengimbas baru (Sistem.dalam);
Sistem.keluar.println ("Masukkan empat nombor:");
// Ulangi gelung empat kali
untuk (int i = 0; i < 4; i++)
// Nombor input
int n = dalam.nextInt ();
// Tetapkan nilai kepada tatasusunan
num_arr [i] = n;

Sistem.keluar.println ("Nilai susun atur adalah:");
// Ulangi gelung lima kali
untuk (int i = 0; i < 4; i++)
// Cetak nilai array
Sistem.keluar.println (num_arr [i]);

// Bahagikan dan cetak nilai
int num = 50/0;
Sistem.keluar.cetak (angka);
// Tutup objek pengimbas
dalam.tutup ();

tangkapan (ArithmeticException e)

Sistem.keluar.println ("Tidak ada nombor yang boleh dibahagi dengan 0");

tangkapan (ArrayIndexOutOfBoundsException e)

Sistem.keluar.println ("Nilai indeks keluar dari array berlaku");

tangkapan (Pengecualian e)

Sistem.keluar.println ("Nilai nombor tidak diberikan");


Pengeluaran:

Output berikut menunjukkan bahawa nilai array dimasukkan dan dicetak dengan betul, tetapi blok tangkapan ketiga dijalankan kerana 50 dibahagi dengan 0, yang merupakan kesalahan.

Program ini dilaksanakan buat kali kedua. Apabila nilai rentetan diberikan sebagai nilai array, maka pengecualian kedua dihasilkan, dan pernyataan blok tangkapan kedua dijalankan.

Contoh-3: Pengendalian pengecualian dengan blok cuba-tangkapan-akhirnya

Penggunaan blok akhirnya dengan cubaan tangkapan ditunjukkan dalam contoh berikut. Kod akhirnya blok dilaksanakan sekiranya pengecualian berlaku atau tidak. Dalam kod, nilai integer akan diambil dari pengguna. Sekiranya pengguna memberikan nilai rentetan, maka InputMismatchException

akan menghasilkan dan mencetak mesej dari blok tangkapan. Objek pengimbas akan ditutup di akhirnya sekat jika pengecualian menjana atau tidak.

import java.guna.Pengimbas;
import java.guna.InputMismatchException;
kelas awam kecuali3
utama kekosongan statik awam (String [] args)
// Buat objek Pengimbas
Pengimbas dalam = Pengimbas baru (Sistem.dalam);
Sistem.keluar.cetak ("Masukkan nombor:");
cuba
// Ambil data rentetan dari pengguna
nombor int = dalam.nextInt ();
// Cetak nombor
Sistem.keluar.println ("Nilai nombor =" + nombor);
tangkapan (InputMismatchException e)
// Mencetak mesej ralat
Sistem.keluar.println ("Nilai rentetan tidak diterima.");

akhirnya
// Tutup objek pengimbas
dalam.tutup ();
Sistem.keluar.println ("Ditamatkan dari program");


Pengeluaran:

78 diberikan sebagai nilai input dalam output berikut setelah melaksanakan kod. Jadi, tidak ada pengecualian yang dihasilkan di sini. Mesej dari blok akhirnya dicetak kemudian.

Seterusnya, hello diberikan sebagai input setelah melaksanakan kod yang merupakan rentetan. Jadi, pengecualian dihasilkan, dan mesej ralat dari blok tangkapan dicetak. Mesej dari blok akhirnya dicetak kemudian.

Kesimpulan:

Pengendalian pengecualian adalah ciri yang sangat penting dan berguna dari mana-mana bahasa pengaturcaraan yang dapat digunakan untuk menyembunyikan mesej ralat sebenar dari pengguna dan memberikan mesej ralat yang dapat dibaca manusia untuk pengguna memahami kesalahan dengan betul. Tutorial ini membantu pengguna mempelajari pelbagai cara untuk menerapkan pengendalian pengecualian di Java dan membuat kod mereka lebih sesuai.

Permainan Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar anda ketika menggunakan Linux-ia juga dapat menjadi sumber hiburan kerana anda dapat menggunakannya untuk m...
Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Sekiranya anda suka bermain permainan di Linux dengan gamepad dan bukannya sistem input papan kekunci dan tetikus biasa, ada beberapa aplikasi berguna...
Alat Berguna untuk Pemain Linux
Sekiranya anda suka bermain permainan di Linux, kemungkinan anda telah menggunakan aplikasi dan utiliti seperti Wine, Lutris dan OBS Studio untuk meni...