Повторное поднятие исключения из обработчика.

Номер: 
36
Тип: 
Warning

  Когда мы вызываем raise E; мы говорим компилятору, что это новый объект исключения, которое мы хотим поднять, но после выхода из обработчика объект исходного исключения будет разрушен.

Примеры: 
procedure TForm56.Button1Click(Sender: TObject);

  procedure TestProc;
  begin
    try
      raise Exception.Create('FIRST EXCEPT');
    except 
      on e: Exception do // <-- Объект e будет разрушен после выхода из этого блока
      begin
        ShowMessage('Except 1: ' + e.Message);
        raise e; // <-- Это ошибка. Нужно вызвать raise;
      end;
    end;
  end;

begin
  try
    TestProc;
  except 
    on e: Exception do // <-- Это исключение нельзя обработать, 
                       //     объект e уже разрушен в TestProc
    begin
      ShowMessage('Except 2: ' + e.Message);
    end;
  end;
end;