例外が発生したときに変数に値を代入したい。
exception
when excep1 then
var = true;
when excep2 then
var = true;
end;
私は何かをしたい、それは可能ですか?
exception
var = true;
when excep1 then
-- do something
when excep2 then
-- do something
end;
例外が発生したときに変数に値を代入したい。
exception
when excep1 then
var = true;
when excep2 then
var = true;
end;
私は何かをしたい、それは可能ですか?
exception
var = true;
when excep1 then
-- do something
when excep2 then
-- do something
end;
Odiが提案したように再レイズすることは間違いなく機能します。少し違ったやり方で同じ効果が得られます。
begin
var := true;
... your code that can cause exceptions...
var := false; --var set to false unless an exception was encountered
exception
when exception1 then
...
when exception2 then
...
end;
別の方法は、別の手順に入れることです。たとえば、次のようになります。
declare
procedure common_exception_routine is
begin
var = true;
end common_exception_routine;
begin
...
exception
when excep1 then
common_exception_routine;
when excep2 then
common_exception_routine;
end;
サブブロックでこれを行うことができます。最初に値を設定してから、例外を再発生させてそれを処理します。
begin
begin
-- do something
exception
when others then
var = true;
raise; -- re-raise the current exception for further exception handling
end;
exception
when excep1 then
-- do something
when excep2 then
-- do something
end;