Kirill Temnenkov (
general_manjago) wrote2008-06-18 08:44 am
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
exception when others then null
Ох, как же я ненавижу ковыряться в коде на PL/SQL, в котором встречаются конструкции типа
exception when others then return null! Хрен там в чем разберешься, если что-то пошло не так!
А недавно я просто впал в экстаз - там у чувака была гениальная функция
function Func return varchar2
is
begin
-- здесь что-то делается
exception when others then null
end;
А потом чувак написал что-то вроде
-- блок кода 1
select id into a from ... where field1 = Func
-- блок кода 2
exception when others then null;
В селекте возник-таки exception no_data_found, "блок кода 2" не выполнился - но пока мы до этого доперли....
Оригинал на http://www.itcommunity.ru/blogs/temnenkov/archive/2008/06/18/9868.aspx
no subject
я обычно (если лениво прикидывать, чё там не так может пойти)
пишу
exception
when others then
dbms_output.put_line(SQLERRM);
end;
Ага, попался!
Но вот скажи, как представитель племени, ловящих все exceptiopns - зачем вот ты это делаешь?
Ну возник неожиданный exception - почему бы его не передать вверх по стеку? Ведь легче будет разобраться, что пошло не так?
Re: Ага, попался!
По идее, я согласен, действительно, ловить надо только то, что сам сможешь вылечить :-) гы-гы...
Но вот эта моя привычка вполне согласуется с приложением, с которым я последние пару лет ковыряюсь (я не девелопер, скорее, что-то вроде поддержки).
Там в клиентской части есть хоткей, который включает лОвлю dbms_output, плюс к тому протоколирует, какие процедуры вызывались и сколько времени каждая работала. Разработчики молодцы, удобную вещь предусмотрели.
Хотя в этом месте непойманный эксепшен, как правило, тоже покажется :-)