Pengertian Exception Handling
Exception handling merupakan salah satu keunggulan PL/SQL yang digunakan untuk menangani error yang terjadi pada saat run time. Misalnya, jika kita menulis query dan data tidak ditemukan dalam database, Oracle melempar pengecualian NO_DATA_FOUND dengan kode ORA01403, yang berarti bahwa data tidak ditemukan Dalam PL / SQL kondisi peringatan atau kesalahan sebagai
A. menunjukkan pengecualian. Pengecualian dapat didefinisikan secara internal (melalui runtime) atau ditentukan pengguna. Contoh pengecualian yang ditentukan secara internal adalah pembagian dengan nol dan memori yang tidak mencukupi. Beberapa pengecualian internal umum memiliki nama yang telah ditentukan sebelumnya, seperti:
B. ZERO_DIVIDE dan STORAGE_ERROR. Pengecualian internal lainnya dapat diberi nama.
Anda dapat menentukan pengecualian Anda sendiri di bagian deklaratif dari setiap blok, subrutin, atau paket PL / SQL. Misalnya, Anda dapat menentukan pengecualian yang disebut "dana_tidak mencukupi" untuk menandai rekening bank yang ditarik terlalu banyak. Tidak seperti pengecualian internal, pengecualian yang ditentukan pengguna harus memiliki nama. Jika kesalahan terjadi, pengecualian dilemparkan. Artinya, eksekusi normal berhenti dan transfer kontrol ke bagian penanganan pengecualian dari blok atau subprogram PL/SQL Anda. Pengecualian internal dimunculkan secara implisit (otomatis) oleh sistem runtime. Pengecualian yang ditentukan pengguna harus dimunculkan secara eksplisit oleh RAISE pernyataan, yang juga dapat meningkatkan pengecualian yang telah ditentukan sebelumnya. Untuk menangani pengecualian yang muncul, Anda menulis rutinitas terpisah yang disebut exception handlers .
Setelah pengendali pengecualian berjalan, blok saat ini berhenti mengeksekusi dan blok penutup dilanjutkan dengan pernyataan berikutnya. Jika tidak ada blok penutup, kontrol kembali ke lingkungan host. Dalam contoh berikut, Anda menghitung dan menyimpan rasio harga/penghasilan perusahaan menggunakan simbol saham XYZ. Jika perusahaan tidak memiliki penjualan, pengecualian yang telah ditentukan ZERO_DIVIDE dilemparkan. Ini menghentikan eksekusi normal blok dan mentransfer kontrol ke pengendali pengecualian. OTHERSHandler opsional menangkap semua pengecualian yang tidak memiliki nama tertentu.Kita akan menulis perbedaan dengan menggunakan blok enkripsi dan tidak menggunakan blok enkripsi:
Pemrosesan kesalahan tidak dipisahkan dengan jelas dari pemrosesan normal; juga tidak kuat. Jika Anda mengabaikan kode cek, kesalahan tidak terdeteksi dan kemungkinan menyebabkan kesalahan lain yang tampaknya tidak terkait.Dengan pengecualian, Anda dapat menangani kesalahan dengan mudah tanpa perlu mengkode beberapa pemeriksaan, sebagai berikut:
- Contoh block yang menggunakan Enkripsi
- Contoh blok yang tidak menggunakan enkripsi
Pengecualian PL/SQL
Pengecualian internal dimunculkan secara implisit setiap kali program PL/SQL Anda melanggar aturan Oracle atau melebihi batas yang bergantung pada sistem. Setiap kesalahan Oracle memiliki nomor, tetapi pengecualian harus ditangani dengan nama. Jadi, PL/SQL menetapkan beberapa kesalahan Oracle umum sebagai pengecualian. Misalnya, PL/SQL memunculkan pengecualian yang telah ditentukan sebelumnya NO_DATA_FOUND
jika SELECT
INTO
pernyataan tidak mengembalikan baris.Untuk menangani kesalahan Oracle lainnya, Anda dapat menggunakan OTHERS
handler.
Fungsi SQLCODE
dan SQLERRM
sangat berguna dalam OTHERS
handler karena mereka mengembalikan kode kesalahan Oracle dan teks pesan. Atau, Anda dapat menggunakan pragma EXCEPTION_INIT
untuk mengaitkan nama pengecualian dengan kode kesalahan Oracle.PL/SQL mendeklarasikan pengecualian yang telah ditentukan secara global dalam package STANDARD
, yang mendefinisikan lingkungan PL/SQL. Jadi, Anda tidak perlu mendeklarasikannya sendiri. Anda dapat menulis penangan untuk pengecualian yang telah ditentukan sebelumnya menggunakan nama dalam daftar berikut:
0 Komentar