Kann innerhalb eines finally-Blocks festgestellt werden, dass eine Ausnahme ausgelöst wurde?Wie kann ich feststellen, ob ich in einem Delphi-Ausnahme-Stack bin?
Antwort
Sie könnten überprüfen, ob ExceptObject oder ExceptAddr zugeordnet sind . In der VCL-Quelle wird dies zur Überprüfung durchgeführt. in GIFImg.pas oder jpeg.pas.
Der folgende Code ausgeben sollte
ExceptObject <> nil
ExceptObject = nil
und wenn Sie die Ausnahme entfernen dann natürlich
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');
Hey, schön dich hier zu sehen! –
Dies 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 bekommen haben, stellen Sie sicher, ReleaseExceptionObject danach zu nennen)
AFAIK kann dies nur mit verschachtelten try-Anweisungen erreicht werden:
Try
Try
...
Except
...
End;
Finally
...
End
- 1. Wie kann ich feststellen, ob ich vor einem Bearbeiten oder Erstellen bin? CakePHP
- 2. Wie kann ich feststellen, in welchem Unterprogramm ich bin?
- 3. Wie kann ich feststellen, ob ich in Powershell oder CMD bin?
- 4. Wie kann ich feststellen, ob ich mit .NET auf x64 oder x86 bin?
- 5. Wie kann ich zur Laufzeit feststellen, ob ich mit der Produktionsdatenbank verbunden bin?
- 6. Wie kann ich feststellen, ob ich ein Speicherleck habe?
- 7. In einem finally-Block kann ich feststellen, ob eine Ausnahme
- 8. Wie kann ich feststellen, ob eine Klasse serialisiert werden kann?
- 9. Wie kann ich feststellen, ob mein Prozess interaktiv ausgeführt wird?
- 10. Wie kann ich feststellen, ob ein Polyeder konvex ist?
- 11. Wie kann ich feststellen, ob ein Realm erfolgreich aktualisiert wurde?
- 12. Wie kann ich feststellen, ob MediaElement abgespielt wird?
- 13. Wie kann ich feststellen, ob ein Unterverzeichnis in C# existiert?
- 14. Wie kann ich feststellen, ob in Python ein Kind existiert?
- 15. Wie kann ich feststellen, ob ich bestimmte eindeutige Werte in einem Subdictionary habe?
- 16. Wie kann ich programmatisch feststellen, ob ein Dateiname, nach dem ich suche, auf einem Webserver existiert?
- 17. Wie kann ich feststellen, ob WKWebView Audio spielt?
- 18. Wie kann ich feststellen, ob .NET 3.5 SP1 installiert ist?
- 19. Wie kann ich feststellen, auf welcher Seite ich in einer ASP.NET MVC-Anwendung bin?
- 20. Wie kann ich feststellen, ob SP1 auf VS2008 installiert wurde?
- 21. Wie kann ich feststellen, ob NSManagedObject gespeichert ist?
- 22. Wie kann ich feststellen, ob die Verbindung gemessen wird?
- 23. Wie kann ich feststellen, ob eine Rust-Bibliothek veraltet ist?
- 24. Wie kann ich feststellen, ob jemand von printPreview gedruckt hat?
- 25. Wie kann ich feststellen, ob Java Sun/Oracle/OpenJDK ist?
- 26. Wie kann ich feststellen, ob ein Bild photoshopped wurde?
- 27. Wie kann ich feststellen, ob ein Popup vollständig geladen wurde?
- 28. Wie kann ich feststellen, ob ein Browser ein Popup blockiert?
- 29. Wie kann ich feststellen, ob mein TextBlock-Text abgeschnitten wird?
- 30. Wie kann ich feststellen, ob ein MySQL-Prozess blockiert ist?
Fragen Sie, ob Sie sind e im 'finally'-Block * weil * eine Exception ausgelöst wurde, oder nur, ob es eine Ausnahme * irgendwo * im Programm gibt, zB wenn Sie einen' try-finally'-Block innerhalb eines 'except'-Bereichs eingeben? –