2009-09-12 8 views

Odpowiedz

18

Można sprawdzić, czy ExceptObject lub ExceptAddr są przypisane . W źródle VCL odbywa się to do egzaminu. w GIFImg.pas lub jpeg.pas.

Poniższy kod powinien wypisać

ExceptObject <> nil
ExceptObject = nil

a jeśli usunąć wyjątek to oczywiście

ExceptObject = nil
ExceptObject = nil

try 
    try 
     raise Exception.Create('Just an exception'); 
    finally 
     if ExceptObject <> nil then 
     WriteLn('ExceptObject <> nil') 
     else 
     WriteLn('ExceptObject = nil'); 
    end; 
    except 

    end; 
    if ExceptObject <> nil then 
    WriteLn('ExceptObject <> nil') 
    else 
    WriteLn('ExceptObject = nil'); 
+4

Hej, miło cię tu widzieć! –

3

To jest rodzaj hackowania, ale można spróbować wywołać AcquireExceptionObject. Jeśli jesteś w stanie wyjątku, otrzymasz wartość zwracaną, w przeciwnym razie otrzymasz zero.

(. Jeśli nie dostać jeden, upewnij się, aby zadzwonić ReleaseExceptionObject potem)

2

AFAIK ten można osiągnąć tylko z zagnieżdżonych instrukcji try:

Try 
    Try 
    ... 
    Except 
    ... 
    End; 
Finally 
    ... 
End 
Powiązane problemy