Menangani Kesalahan dan Pengecualian dalam Aplikasi Delphi

Sayangnya, membangun aplikasi termasuk pengkodean. Terlepas dari seberapa hati-hati Anda menulis / men-debug program Anda, tidak mungkin untuk membayangkan setiap situasi yang bisa salah. Pengguna yang tidak berpengalaman mungkin, misalnya, mencoba membuka file yang tidak ada atau memasukkan nilai buruk ke dalam bidang data.
Pengguna membuat kesalahan dan kami harus siap untuk menangani / mencegah kesalahan ini di mana pun dan kapan pun memungkinkan.

Kesalahan, Pengecualian?

Pengecualian umumnya adalah kondisi kesalahan atau peristiwa lain yang mengganggu aliran eksekusi normal dalam aplikasi. Setiap kali kesalahan dihasilkan dari pemrosesan baris kode, Delphi membuat (menimbulkan) objek turunan dari TObject yang disebut objek pengecualian.

Blok yang dijaga

Aplikasi merespons pengecualian baik dengan menjalankan beberapa kode terminasi, menangani pengecualian, atau keduanya. Cara mengaktifkan perangkap kesalahan / pengecualian dalam kode yang diberikan, pengecualian harus terjadi dalam blok pernyataan yang dijaga. Kode umum terlihat seperti:

instagram viewer
mencoba. {blok kode yang dijaga} kecuali. di mulai. {exception block-handles SomeException} end; akhir;

SEBUAH coba / kecuali pernyataan mengeksekusi pernyataan di blok kode yang dijaga. Jika pernyataan dieksekusi tanpa ada pengecualian yang dimunculkan, blok pengecualian diabaikan, dan kontrol diteruskan ke pernyataan mengikuti kata kunci akhir.

Contoh:

... Nol: = 0; mencoba. dummy: = 10 / Nol; kecuali. pada EZeroDivide lakukan. MessageDlg ('Tidak dapat membagi dengan nol!', MtError, [mbOK], 0); akhir;... 

Melindungi Sumber Daya

Ketika bagian kode memperoleh sumber daya, sering kali perlu untuk memastikan bahwa sumber daya dirilis lagi (atau Anda mungkin mendapatkan kebocoran memori), terlepas dari apakah kode tersebut selesai secara normal atau terganggu oleh pengecualian. Dalam hal ini, sintaks digunakan akhirnya kata kunci dan terlihat seperti:

{beberapa kode untuk mengalokasikan sumber daya} mencoba. {blok kode yang dijaga} akhirnya. {termination blok - kode ke sumber daya gratis} akhir;

Contoh:

... AboutBox: = TAboutBox. Buat (nihil); mencoba. Tentang Kotak. ShowModal; akhirnya. Tentang Kotak. Melepaskan; akhir;... 

Aplikasi. OnException

Jika aplikasi Anda tidak menangani kesalahan yang menyebabkan pengecualian, maka Delphi akan menggunakan pengendali pengecualian standarnya - ia hanya akan memunculkan kotak pesan. Anda dapat mempertimbangkan menulis kode di acara OnException untuk objek TApplication, untuk menjebak kesalahan di tingkat aplikasi.

Istirahat Pada Pengecualian

Saat membangun sebuah program dengan penanganan pengecualian, Anda mungkin tidak ingin Delphi membobol Pengecualian. Ini adalah fitur hebat jika Anda ingin Delphi menunjukkan di mana pengecualian telah terjadi; Namun, itu bisa mengganggu ketika Anda menguji penanganan pengecualian Anda sendiri.

Beberapa kata terakhir

Ide artikel ini adalah untuk memberi Anda pandangan sekilas tentang apa saja pengecualian itu. Untuk diskusi lebih lanjut tentang penanganan pengecualian, pertimbangkan Tentang Menangani Pengecualian dalam Penanganan Pengecualian Delphi, menggunakan alat seperti Penanganan Kecelakaan Delphi / Pengecualian dengan Pelaporan Bug dan beberapa artikel terkait berikut: