Wie kann ich feststellen, ob ich in einem Delphi-Ausnahme-Stack bin?

8

Kann innerhalb eines finally-Blocks festgestellt werden, dass eine Ausnahme ausgelöst wurde?

    
Zartog 12.09.2009, 21:35
quelle

3 Antworten

18

Sie können überprüfen, ob ExceptObject oder ExceptAddr zugewiesen sind. In der VCL-Quelle wird dies zur Prüfung durchgeführt. in GIFImg.pas oder jpeg.pas.

Der folgende Code sollte

ausgeben

AusgenommenObjekt & lt; & gt; null
ExceptObject = nil

und wenn Sie die Ausnahme dann natürlich entfernen

AusgenommenObjekt = keine
ExceptObject = nil

%Vor%     
Uwe Schuster 12.09.2009, 22:42
quelle
3

Das ist eine Art Hack, aber Sie könnten versuchen, AcquireExceptionObject aufzurufen. Wenn Sie sich in einem Ausnahmezustand befinden, erhalten Sie einen Rückgabewert, andernfalls erhalten Sie null.

(Wenn Sie einen erhalten haben, müssen Sie danach ReleaseExceptionObject aufrufen.)

    
Mason Wheeler 12.09.2009 21:41
quelle
2

AFAIK dies kann nur mit verschachtelten try-Anweisungen erreicht werden:

%Vor%     
sdu 12.09.2009 21:42
quelle