2013-12-05 7 views
0

Есть ли что-нибудь вроде иерархии исключений в PLSQL? Я googled это, и ничего релевантного не возникает. Я знаю, что мы должны дать «КОГДА ДРУГИЕ ТОГДА» в качестве заключительной части секции исключений. Что касается других исключений, есть ли что-то вроде иерархии? Или все исключения в совокупности попадают под «КОГДА ДРУГИЕ», и это в какой-то мере является основой всех исключений, подобных классу Exception в Java?Иерархия исключений в PLSQL

ответ

3

Нет иерархии, каждое исключение имеет свой собственный код (за исключением пользовательских исключений, если вы еще не определили код), который может использоваться для индивидуального захвата исключения. EXCEPTION WHEN OTHERS просто улавливает каждый исключение, поэтому это опасно при неправильном использовании.

Если вам нужно захватить несколько исключений в иерархическом порядке, вы можете указать порядок, в котором вы захватить их, указав несколько обработчиков, например:

exception 
when dup_val_on_index then 
    insert ... 
    raise; 
when user_definex_exception then 
    logerror(sqlcode); 
when others then 
    raise; 

Это позволит вам захватить определенные исключения в начале и обрабатывайте, как вы пожелаете, перед записью остатка (если это то, что вы хотите сделать). В the documentation довольно много информации.

Смежные вопросы