RAISE_APPLICATION_ERROR
prosedur
memiliki parameter ketiga yang mengontrol apakah pengecualian menggantikan tumpukan pengecualian saat ini (perilaku default) atau menambahkannya.
Jadi jika Anda memberikannya TRUE
itu akan menampilkan kedua pesan; dalam panggilan dari prosedur Anda:
...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
memberi Anda output:
BEGIN
*
ERROR at line 1:
ORA-20101: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
ORA-20102: Circle Code is wrong or not available
ORA-06512: at line 2
Untuk hanya menampilkan pesan dan bukan informasi tumpukan lainnya, Anda perlu memanipulasi tumpukan. Artikel ini
menyentuh tentang cara menggunakan format_error_backtrace
untuk mengekstrak informasi yang Anda minati, tetapi sayangnya tautan ke BT
paket mati. Beberapa alasan yang sama dicakup di sini
. Pada dasarnya Anda perlu mengurai string pengecualian menjadi baris, dan hanya menampilkan yang dimulai dengan ORA-20%
, saya pikir.
Tetapi berhati-hatilah agar tidak kehilangan informasi yang mungkin sebenarnya sangat penting. Secara khusus saya sarankan Anda hanya menjebak kesalahan tertentu yang Anda cari, bukan OTHERS
- biarkan saja sehingga Anda dapat menangani kesalahan tak terduga dan tidak menyembunyikan sesuatu yang penting.