Z poziomu bloku finally można powiedzieć, że został zgłoszony wyjątek?Jak mogę sprawdzić, czy znajduję się w stosie wyjątków Delphi?
Odpowiedz
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');
Hej, miło cię tu widzieć! –
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)
AFAIK ten można osiągnąć tylko z zagnieżdżonych instrukcji try:
Try
Try
...
Except
...
End;
Finally
...
End
- 1. Maskowanie wyjątków w Delphi
- 2. jak sprawdzić, czy aktywność jest nadal w stosie?
- 3. Jak mogę sprawdzić, kto wywołał akcję w Delphi?
- 4. Jak mogę sprawdzić, czy ciąg kończy się „.csv” w C
- 5. Co Dead and Exploded w stosie wyjątków Swift?
- 6. Jak sprawdzić, czy pole wyboru jest zaznaczone w TTaskDialog Delphi?
- 7. Jak mogę sprawdzić, czy telefon z Androidem ładuje się?
- 8. Jak mogę się dowiedzieć, która procedura spowodowała wyjątek w Delphi?
- 9. Jak mogę sprawdzić, czy instancja twisted.internet.protocol rozłączył
- 10. Jak mogę sprawdzić, czy zmienna zawiera lambdę?
- 11. Jak mogę sprawdzić, czy Dispatcher.DisableProcessing jest aktywny?
- 12. Jak sprawdzić, czy używa się brudnej kontroli?
- 13. Jak sprawdzić, czy klasa Delphi jest deklarowana jako abstrakcyjna?
- 14. Jak mogę sprawdzić, czy scenarzysta jest zamknięty?
- 15. Jak sprawdzić, czy urllib.urlretrieve się powiedzie?
- 16. Delphi: jak sprawdzić, czy plik istnieje (ścieżka powyżej 255 znaków)
- 17. AS3 - Jak sprawdzić, czy wideo się skończyło?
- 18. Jak znaleźć natywne wyjątki w stosie x64?
- 19. Jak mogę sprawdzić, czy instancja została utworzona?
- 20. Jak mogę sprawdzić, czy kolejka jest pusta?
- 21. Jak mogę sprawdzić, czy funkcja jest częściowa?
- 22. Jak mogę sprawdzić, czy CGPoint został zainicjowany?
- 23. Jak mogę sprawdzić, czy wartość jest liczbą?
- 24. Jak mogę sprawdzić, czy połączenie używa ssl?
- 25. Jak mogę sprawdzić, czy działa moodle cron?
- 26. Czy mogę sprawdzić równość ciągów w lua?
- 27. Jak mogę zaimplementować "przeciągnij w prawo, aby odrzucić" kontroler widoku znajdujący się w stosie nawigacyjnym?
- 28. Czy powinienem sprawdzić odpowiedź WebClient.UploadFile, aby dowiedzieć się, czy przesyłanie zakończyło się powodzeniem?
- 29. Jak mogę sprawdzić, czy jestem w zaznaczonym kontekście?
- 30. Jak mogę sprawdzić, czy ciąg zawiera litery w Swift?
Czy pytasz, czy jesteś e w bloku 'finally' *, ponieważ * został zgłoszony wyjątek lub po prostu, czy w programie istnieje wyjątek *, na przykład po wprowadzeniu bloku' try-finally' z sekcji 'except'? –