Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#20

AW: EAccessViolation führt zu unerwartetem APPCRASH

  Alt 23. Mai 2018, 10:29
Problem gelöst: es lag an einem raise E; anstatt raise; in einem on E: Exception Handler Block

Delphi-Quellcode:
function TBTMQProducer.InternalSend(const AMessage: IMessage;
  const Destination: IDestination;
  const CompletionListener: ICompletionListener): IMQProducer;
begin
  try
    Producer.Send(Destination, AMessage);
    CompletionListener.OnMessage(AMessage);
  except
    on E: Exception do
    begin
      CompletionListener.OnException(AMessage, E);
      raise E; // ------- <
    end;
  end;
end;
Wenn dort anstatt dem raise E; einfach nur raise; steht, funktioniert die Exceptionbehandlung wie gewohnt.

Zu diesem Thema habe ich diese Seiten gefunden:

https://marc.durdin.net/2012/10/how-...ion-in-delphi/
https://zerolith.com/delphi/on-delph...pt-blocks.html

Fazit: raise; ist korrekt. Mit einem versehentlichen raise E; hat man Stunden oder Tage spannenden Debuggings vor sich
Michael Justin
  Mit Zitat antworten Zitat