Pregunta

Abrí un proyecto (creado en D2007 / 08) en D2009 y compilaría, pero lanzaría toneladas de excepciones cuando se ejecutara. Es extraño, pero sé que el proyecto es un desastre, así que quiero seguir adelante y arreglarlo. Bueno, en realidad no arreglarlo todo, solo hacer que funcione sería suficiente.

Cuando lo ejecuté, recibí una Notificación de excepción del depurador (el pequeño mensaje de diálogo con los botones Romper, Continuar, Ayuda) y quería continuar y ver si tal vez funcionaría cuando se omitiera la excepción. Marqué el pequeño '' Ignorar este tipo de excepción '' marque la casilla en la esquina inferior izquierda y haga clic en Continuar. Ahora ya no recibo la Notificación de excepción, pero la aplicación aún no se ejecuta. Acabo de recibir un par de cuadros de error vagos y tengo muy poca idea de lo que está sucediendo.

Me gustaría volver a habilitar el tipo de excepción que seleccioné previamente para que se ignore. Pero no puedo encontrar la opción en ningún lado. ¿Dónde debería buscar esto? ¿Alguien puede ayudar?

¿Fue útil?

Solución

Lo siguiente se extrae de esta página en Delphi Q & amp; A por Rob Kennedy : (con licencia CC), aunque se relaciona con Delphi 2005 puede ayudar.

¿Por qué continúo recibiendo mensajes de error incluso después de haber escrito un controlador de excepciones?

En su configuración predeterminada, el IDE de Delphi le notifica cada vez que ocurre una excepción en su programa, como en la Figura 1. Lo importante es darse cuenta de que en ese momento, todavía no se ha ejecutado ninguno de los códigos de manejo de excepciones de su programa. Es todo Delphi mismo; su estado especial como depurador le permite recibir la primera notificación de cualquier excepción en su programa, incluso antes de que su programa lo sepa.

 ingrese la descripción de la imagen aquí

Evitar la notificación

Si no desea que se le notifique cuando se produce una excepción, tiene algunas opciones.

  • Puede usar los "puntos de interrupción avanzados" de Delphi para deshabilitar el manejo de excepciones en una región de código. Para comenzar, establezca un punto de interrupción en la línea de código donde desea que el IDE ignore las excepciones. Haga clic con el botón derecho en el punto de punto de interrupción en el margen y abra el cuadro de diálogo de propiedad de punto de interrupción. En la sección avanzada hay algunas casillas de verificación. (Consulte la Figura 2). Desactive la casilla "Interrumpir" para evitar que el depurador interrumpa su programa en esa línea, y configure la casilla "Ignorar excepciones posteriores".

    Luego, establezca otro punto de interrupción donde desee que el depurador reanude el manejo de las excepciones. Cambie sus propiedades para manejar las excepciones subsiguientes.

 ingrese la descripción de la imagen aquí

  • Puede decirle al depurador que ignore ciertos tipos de excepciones. La figura 3 muestra las opciones de excepción de idioma de Delphi. Agregue una clase de excepción a la lista, y todas las excepciones de ese tipo y de cualquier tipo descendiente pasarán a su programa sin la interferencia de Delphi.

 ingrese la descripción de la imagen aquí

  • En una opción relacionada con la anterior, puede decirle al depurador que no interrumpa ninguna excepción. Para hacerlo, desmarque la casilla de verificación "Notificar sobre excepciones de idioma".

  • Finalmente, puede desactivar la depuración integrada por completo. Delphi no le notificará las excepciones y tampoco se detendrá en los puntos de interrupción ni permitirá el uso del botón "Pausa". Desactive la depuración integrada en las opciones del depurador, como se muestra en la Figura 5 para Delphi 2005.

 ingrese la descripción de la imagen aquí

Otros consejos

He encontrado los tipos de excepción ignorados en

(Menú principal) Herramientas > > Opciones > > Opciones de depurador > > CodeGear Debuggers > > Excepciones de idioma > > y se ignora la lista de tipos de excepción.

Es algo más oculto que en D2005 pero muy cercano a lo que se dijo en el artículo al que hace referencia Stuart Dunkeld.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top