2

例外が発生したときに変数に値を代入したい。

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;
4

3 に答える 3

3

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;
于 2012-04-10T19:25:40.533 に答える
1

別の方法は、別の手順に入れることです。たとえば、次のようになります。

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;
于 2012-04-11T02:09:50.460 に答える
1

サブブロックでこれを行うことができます。最初に値を設定してから、例外を再発生させてそれを処理します。

  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;
于 2012-04-10T17:09:48.200 に答える