Pengecualian disebut mengacu pada kesalahan sementara yang disebabkan oleh masalah dalam program itu sendiri atau pengoperasian yang tidak tepat oleh pengguna selama menjalankan program.
Hentikan eksekusi program dan berikan hasil yang salah. Siapa pun yang pernah menulis program di Delphi pasti akrab dengan pengecualian. sumber pengecualian
Ada banyak aspek. Referensi ke penunjuk nol, penugasan di luar batas, pembagian dengan nol, dll. Semuanya dapat menyebabkan pengecualian. Jika tindakan yang tepat tidak diambil untuk kejadian abnormal,
Penanganan yang tidak tepat dapat menyebabkan seluruh program terhenti. Untungnya, Delphi secara otomatis dapat menangani hampir semua pengecualian yang mungkin terjadi.
menghadapi.
1. Contoh sederhana Delphi yang secara otomatis menangani pengecualian
1. Pada lingkungan terintegrasi Delphi (3.0), pilih menu Tools |. Environment Options, dan pada Environment yang muncul
Ada opsi Break on Exception di halaman PReferences di jendela Options (di kiri bawah). Opsi ini secara default
Status tersebut dipilih, sehingga jika terjadi pengecualian saat menjalankan program di lingkungan terintegrasi Delphi, maka program secara otomatis akan terputus dan kembali
Dalam keadaan debugging Delphi, kursor tetap berada pada kode di mana pengecualian terjadi sehingga pemrogram dapat memodifikasinya. Sekarang klik opsi ini untuk membuatnya tidak tersedia
Periksa dan oke.
2. Buat proyek baru dan simpan sebagai Excep.dpr (akan berguna nanti), dan simpan unit terkait sebagai Excpunit.pas di Form1
Masukkan komponen TmaskEdit ke dalamnya, atur properti EditMask ke Date, lalu masukkan komponen Tbutton, klik dua kali,
Tulis acara OnClick-nya sebagai berikut:
prosedur TForm1.BitBtn1Click(Pengirim: TObject);
var k:integer;
mulai
k:=0;
k:=9 div k;{Pengecualian pembagian dengan 0 akan dibuat di sini}
akhir;
3. Simpan dan jalankan program. Cukup tulis satu atau dua angka di MaskEdit1 dan tekan Enter. Ini akan menghasilkan (disebut juga kebangkitan).
Pengecualian muncul di jendela berikut:
Ini merupakan pengecualian karena data yang dimasukkan tidak lengkap dalam kotak MaskEdit secara otomatis menanganinya
Setelah "OK", program melanjutkan eksekusi. Klik Button1, akan muncul jendela serupa lainnya, karena ada a
Pembagian dengan pengecualian nol.
2. Perintah Delphi untuk situasi abnormal ada dalam bahasa Inggris, yang tidak digunakan oleh orang China. Kami dapat mencegat pengecualian ini dan menerapkannya menggunakan
Kiat Cina. Langkah-langkah spesifiknya adalah sebagai berikut:
1. Ubah event OnClick Button1 sebagai berikut:
prosedur TForm1.BitBtn1Click(Pengirim: TObject);
var k:integer;
mulai
k:=0;
mencoba
k:=9 divk;
kecuali
showmessage('Pembagi tidak boleh nol');
akhir;
akhir;
2. Simpan dan jalankan program. Kotak prompt yang muncul setelah mengklik Tombol 1 akan digantikan dengan pesan berbahasa Mandarin "Pembagi tidak boleh nol." menggunakan
Pernyataan try...kecuali...end adalah metode umum untuk menangani pengecualian. Pernyataan setelah kata khusus try dijalankan jika
Jika pengecualian terjadi, pernyataan di antara kata-kata yang dicadangkan kecuali dan akhir akan dieksekusi. Jika tidak, pernyataan setelah akhir akan dieksekusi, sehingga menggantikan Delphi
Penanganan pengecualian secara default. Pernyataan serupa lainnya adalah try...finally...end, yang sama dengan try...kecuali..
....Perbedaannya dengan end adalah terlepas dari apakah pernyataan setelah try akan menghasilkan pengecualian, pernyataan setelah akhirnya pasti akan dieksekusi.
Namun, untuk pengecualian seperti yang dihasilkan oleh kotak TmaskEdit, penggunaan pernyataan try tidak berdaya karena kita tidak dapat menemukannya
Tempat untuk menulis pernyataan try. Kami hanya bisa menyelesaikannya dengan cara lain.
3. Setiap proyek di Delphi mempunyai objek Tapplication, yaitu objek yang tidak terlihat. kita bisa
Dengan memodifikasi acara OnException, Anda dapat mengontrol pengecualian khusus. Metode spesifiknya adalah sebagai berikut:
1. Deklarasikan proses MyException di kelas Form1. Proses ini terkait dengan event OnException Tapplication.
Parameter yang sama:
publik
{Pernyataan publik}
prosedur MyException(Pengirim:TObject;E:Exception);
2. Tulis kode proses:
prosedur TForm1.MyException(Pengirim:TObject;E:Exception);
mulai
jika E adalah EDBEditError maka showmessage('Input tidak sesuai aturan')
kalau tidak
Application.ShowException(E); {Memanggil penanganan pengecualian default}
akhir;
3. Tetapkan nilai pada acara OnException Tapplication di acara OnCreate di Form1:
prosedur TForm1.FormCreate(Pengirim: TObject);
mulai
Aplikasi.OnException :=MyException;
akhir;
4. Simpan dan jalankan program, masukkan satu atau dua angka di kotak MaskEdit, tekan Enter, dan kotak prompt berbahasa Mandarin akan muncul.
Ganti kotak prompt bahasa Inggris asli.
4. Di sini kami ingin mengingatkan semua orang untuk memperhatikan tiga hal:
1.Delphi merangkum semua pengecualian ke dalam satu kelas, yaitu kelas pengecualian (Exception).
Kasus khusus, di sysutils.pas di c:program files orlandDelphi 3source direktori tlsys
Ada definisi kelas Exception.
2. Objek Tapplication menyediakan proses HandleException untuk menangani kesalahan yang tidak tertangani yang muncul dalam program.
Peristiwa pengecualian, ketika kita memberikan nilai pada peristiwa OnException Tapplication, HandleException akan memanggil yang baru
Prosedur untuk mengganti tampilan pesan kesalahan default. Kita bebas mengatur konten yang ditampilkan dalam proses kita sendiri untuk mencapai Han
efek transformasi.
3. Kita menggunakan pernyataan penghakiman IF untuk mendapatkan pengecualian yang ditentukan. Kita dapat menggunakan metode sederhana untuk mendapatkan nama pengecualian yang ditentukan.
Kembali ke contoh di awal artikel, disini kita pilih opsi Break on Exception, jalankan kembali programnya, dan enter
Nomor yang tidak tepat menyebabkan MaskEdit1 menghasilkan pengecualian, dan jendela berikut akan muncul:
EDBEditError di baris kedua jendela adalah nama pengecualian. Kode dalam program artikel ini:
jika E adalah EDBEditError maka showmessage('Input tidak memenuhi persyaratan')
Itu ditulis berdasarkan nama ini. Di sinilah Anda bisa mendapatkan informasi ketika Anda tidak mengetahui nama pasti dari pengecualian tersebut. Menggunakan ini
Berhati-hatilah saat menangani kejadian pengecualian karena Anda telah mengganti penanganan pengecualian default Delphi.
Hal ini dapat menyebabkan sistem crash.
Program di atas berjalan dengan sukses di Windows 95 Delphi 3.0.