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