Da un blocco finale, è possibile dire che è stata sollevata un'eccezione?Come posso sapere se sono in uno stack di eccezioni Delphi?
risposta
si potrebbe verificare se ExceptObject o ExceptAddr vengono assegnati . Nel sorgente VCL questo è fatto per esame. in GIFImg.pas o jpeg.pas.
Il seguente codice dovrebbe uscita
ExceptObject <> nil
ExceptObject = nil
e se si rimuove l'eccezione poi, naturalmente,
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');
Ehi, piacere di vederti qui! –
Questa è una specie di trucco, ma è possibile provare a chiamare AcquireExceptionObject. Se ti trovi in uno stato di eccezione, otterrai un valore di ritorno, altrimenti otterrai zero.
(. Se avete ricevuto uno, assicuratevi di chiamare ReleaseExceptionObject dopo)
per quanto ne so questo può essere raggiunto solo con istruzioni try nidificate:
Try
Try
...
Except
...
End;
Finally
...
End
- 1. come posso trovare le eccezioni native in uno stack x64?
- 2. Come posso sapere se un controllo Delphi è attualmente visibile?
- 3. Come posso sapere se uno streamwriter è chiuso?
- 4. Come posso verificare se sono già state lanciate delle eccezioni?
- 5. Come sapere quali tipi sono definiti in una DCU Delphi?
- 6. GUI: Come posso sapere se alcuni caratteri Unicode sono supportati?
- 7. Eccezioni di mascheramento in Delphi
- 8. Come sapere se sono installati più Django
- 9. Come posso sapere quale versione di WCF sono in esecuzione?
- 10. Come posso sapere se sono in esecuzione da JRuby vs Ruby?
- 11. Come aumentare le eccezioni in Delphi?
- 12. Come posso sapere se IPython è in esecuzione?
- 13. Come posso creare uno stack di navigazione globale?
- 14. Come posso sapere se i dati restituiti di un $ .ajax() riuscito sono di html o json?
- 15. Come puoi sapere se uno stream è chiuso?
- 16. Come proteggere uno stack AWS CloudFormation dall'eliminazione?
- 17. IDataErrorInfo: come sapere se tutte le proprietà sono valide?
- 18. Delphi + Synapse: Come verificare se sono ancora connesso
- 19. Come posso sapere se un'istanza implementa un'interfaccia in ActionScript 3.0
- 20. Come posso sapere se Request/Response è disponibile in Application_Error?
- 21. Posso sapere se tutti i test sono stati trasmessi in Perl's Test :: More?
- 22. Posso sapere se l'iPhone ha un passcode?
- 23. Come faccio a sapere se sono nel debugger sotto Android?
- 24. Come faccio a sapere se due variabili sono approssimativamente uguali?
- 25. Come posso rilevare se l'IDE Delphi specifico è in esecuzione?
- 26. Come sapere se tutti i valori dell'oggetto javascript sono veri?
- 27. Come posso sapere se un "assemblaggio" è davvero cambiato?
- 28. Come posso sapere se una variabile VARCHAR contiene una sottostringa?
- 29. Come posso vedere lo stack di chiamate di eccezioni in SharePoint 2010?
- 30. Come posso scrivere una traccia di stack di eccezioni in erlang dopo averla rilevata?
Stai chiedendo se sei un e nel blocco 'finally' * perché * è stata sollevata un'eccezione, o solo se esiste un'eccezione * da qualche parte * nel programma, come quando si inserisce un blocco' try-finally' da una sezione 'except'? –