Desde dentro de un bloque finally, ¿es posible decir que se ha producido una excepción?¿Cómo puedo saber si estoy en una pila de excepción de Delphi?
Respuesta
se puede comprobar si se asignan ExceptObject o ExceptAddr . En la fuente de VCL esto se hace para el examen. en GIFImg.pas o jpeg.pas.
El siguiente código debe ser la salida
ExceptObject <> nil
ExceptObject = nil
y si se quita la excepción por supuesto
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');
¡Hola, me alegro de verte aquí! –
Esto es una especie de hack, pero podrías intentar llamar a AcquireExceptionObject. Si se encuentra en un estado de excepción, obtendrá un valor de retorno; de lo contrario, obtendrá cero.
(. Si tuviste una, asegúrese de llamar ReleaseExceptionObject después)
yo sepa esto sólo se puede lograr con sentencias try anidadas:
Try
Try
...
Except
...
End;
Finally
...
End
- 1. ¿Cómo puedo saber si estoy en el depurador en Android?
- 2. ¿Cómo saber si estoy en una devolución de datos?
- 3. ¿Cómo puedo saber si estoy huyendo de JRuby vs. Ruby?
- 4. ¿Cómo puedo saber en qué subrutina estoy?
- 5. ¿Cómo puedo saber si estoy antes de guardar desde una edición o una creación? CakePHP
- 6. ¿Cómo puedo saber si estoy corriendo en una máquina virtual VMWARE (desde Linux)?
- 7. En Linux, ¿cómo puedo saber si estoy enlazando a una biblioteca estática o dinámica?
- 8. ¿Cómo puedo saber si se lanzó una excepción SQL debido a una violación de clave externa?
- 9. ¿Cómo puedo saber si un DataSet es el maestro en una relación maestro/detalle en Delphi?
- 10. ¿Cómo puedo averiguar qué procedimiento arrojó una excepción en Delphi?
- 11. ¿Puedo obtener una pila de excepción detallada en PowerShell?
- 12. ¿Cómo puedo saber qué versión de Cassandra estoy ejecutando?
- 13. ¿Cómo puedo saber qué versión de Javascript estoy usando?
- 14. ¿Cómo puedo saber qué versión de OpenGL estoy usando?
- 15. ¿Cómo puedo saber qué versión de TinyMCE estoy ejecutando?
- 16. ¿Cómo puedo saber si un TClass se deriva de otro?
- 17. ¿Cómo puedo saber si estoy en x64 o x86 usando .NET?
- 18. Cómo puedo saber en qué página estoy en una aplicación MVC de ASP.NET
- 19. ¿Cómo puedo saber si una columna es auto_increment en mysql?
- 20. ¿Cómo puedo saber si una variable VARCHAR contiene una subcadena?
- 21. Learning Git. Necesito saber si estoy en el camino correcto
- 22. ¿Cómo puedo saber si una impresora imprimirá en un archivo?
- 23. ¿Cómo puedo saber si una tabla es una matriz?
- 24. En un bloque finally, puedo saber si una excepción ha sido lanzada
- 25. ¿Cómo puedo saber si una propiedad es una colección genérica?
- 26. Aparentemente estoy corrompiendo la pila, pero ¿cómo?
- 27. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 28. ¿Cómo puedo saber si una ventana tiene foco? (API Win32)
- 29. ¿Cómo puedo saber rápidamente si una lista contiene solo duplicados?
- 30. ¿Cómo puedo saber si se hace una rutina, sin bloquear?
¿Estás preguntando si eres tú? e en el bloque 'finally' * porque * se ha producido una excepción, o simplemente si hay una excepción * en algún lugar * en el programa, como cuando se ingresa un bloque' try-finally' dentro de una sección 'except'? –