Exception Handling Oracle - Pemrograman Database

 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

Keuntungan menggunakan kesalahan exception handling

  Pengecualian meningkatkan keterbacaan dengan membiarkan Anda mengisolasi rutinitas penanganan kesalahan. Algoritma utama tidak dikaburkan oleh algoritma pemulihan kesalahan. Pengecualian juga meningkatkan keandalan. Anda tidak perlu khawatir untuk memeriksa kesalahan di setiap titik yang mungkin terjadi. Cukup tambahkan penangan pengecualian ke blok PL/SQL Anda. Jika pengecualian pernah dimunculkan di blok itu (atau sub-blok apa pun), Anda bisa yakin itu akan ditangani.

Menggunakan pengecualian untuk penanganan kesalahan memiliki beberapa keuntungan. Tanpa penanganan pengecualian, setiap kali mengeluarkan perintah,Harus memeriksa kesalahan eksekusi:


  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 OTHERShandler.

    Fungsi SQLCODE dan SQLERRM sangat berguna dalam OTHERShandler karena mereka mengembalikan kode kesalahan Oracle dan teks pesan. Atau, Anda dapat menggunakan pragma EXCEPTION_INITuntuk 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:


    



Agar lebih jelas kita tonton sedikit penjelasan mengenai Exception Handling

Posting Komentar

0 Komentar