La llamada excepción se refiere a un error temporal causado por problemas en el propio programa o por un funcionamiento incorrecto por parte del usuario durante la ejecución del programa.
Detenga la ejecución del programa y produzca resultados erróneos. Cualquiera que haya escrito programas en Delphi seguramente estará familiarizado con las excepciones. fuente de excepción
Hay muchos aspectos: la referencia a un puntero nulo, la asignación fuera de límites, la división por cero, etc., pueden provocar una excepción. Si no se toman las medidas adecuadas para eventos anormales,
Un manejo inadecuado puede provocar que todo el programa falle. Afortunadamente, Delphi puede manejar automáticamente casi todas las excepciones que puedan ocurrir.
tratar con.
1. Un ejemplo simple de cómo Delphi maneja excepciones automáticamente
1. En el entorno integrado de Delphi (3.0), seleccione el menú Herramientas | Opciones de entorno y en el entorno que aparece
Hay una opción Interrumpir en excepción en la página PReferencias en la ventana Opciones (en la parte inferior izquierda). Esta opción está por defecto.
El estado es seleccionado, de modo que si ocurre una excepción al ejecutar el programa en el entorno integrado de Delphi, el programa se interrumpirá automáticamente y regresará.
En el estado de depuración de Delphi, el cursor permanece en el código donde ocurre la excepción para que los programadores puedan modificarlo. Ahora haga clic en esta opción para que no esté disponible.
Compruébalo y está bien.
2. Cree un nuevo proyecto y guárdelo como Excep.dpr (será útil más adelante) y guarde la unidad correspondiente como Excpunit.pas en Form1;
Coloque un componente TmaskEdit en él, establezca su propiedad EditMask en Fecha, luego coloque un componente Tbutton, haga doble clic en él,
Escriba su evento OnClick de la siguiente manera:
procedimiento TForm1.BitBtn1Click(Remitente: TObject);
vark:entero;
comenzar
k:=0;
k:=9 div k;{Aquí se generará una excepción de división por 0}
fin;
3. Guarde y ejecute el programa. Simplemente escriba uno o dos números en MaskEdit1 y presione Entrar. Esto generará (también llamado despertar).
Una excepción aparece en la siguiente ventana:
Esta es una excepción debido a que se ingresaron datos incompletos en el cuadro MaskEdit. Delphi lo maneja automáticamente.
Después de "OK", el programa continúa su ejecución. Haga clic en el Botón1, aparecerá otra ventana similar, porque hay un
Excepción de división por cero.
2. Las indicaciones de Delphi para situaciones anormales están en inglés, que no es utilizado por los chinos. Podemos interceptar estas excepciones e implementarlas usando.
Consejos chinos. Los pasos específicos son los siguientes:
1. Modifique el evento OnClick del Botón1 de la siguiente manera:
procedimiento TForm1.BitBtn1Click(Remitente: TObject);
vark:entero;
comenzar
k:=0;
intentar
k:=9 divk;
excepto
showmessage('El divisor no puede ser cero');
fin;
fin;
2. Guarde y ejecute el programa. El cuadro de aviso que aparece después de hacer clic en el Botón1 será reemplazado por el mensaje chino "El divisor no puede ser cero". usar
La declaración try...except...end es un método común para manejar excepciones. La declaración después de la palabra reservada try se ejecuta si.
Si ocurre una excepción, se ejecutará la declaración entre las palabras reservadas excepto y final. De lo contrario, se ejecutará la declaración después del final, reemplazando así la de Delphi.
Manejo predeterminado de excepciones. Otra declaración similar es intentar...finalmente...finalizar, que es lo mismo que intentar...excepto...
....La diferencia con end es que independientemente de si la declaración posterior a try generará una excepción, la declaración posterior a finalmente definitivamente se ejecutará.
Sin embargo, para excepciones como las generadas por el cuadro TmaskEdit, usar la declaración try no tiene poder porque no podemos encontrar
Un lugar para escribir declaraciones de prueba. Sólo podemos solucionarlo de otra manera.
3. Cada proyecto en Delphi tiene un objeto Tapplication, que es un objeto invisible. podemos
Al modificar su evento OnException, puede controlar excepciones especiales. Los métodos específicos son los siguientes:
1. Declare un proceso Myexception en la clase de Form1. Este proceso está relacionado con el evento OnException de Tapplication.
Mismos parámetros:
público
{Declaraciones públicas}
procedimiento MyException(Remitente:TObject;E:Exception);
2. Escriba el código de proceso:
procedimiento TForm1.MyException(Remitente:TObject;E:Exception);
comenzar
si E es EDBEditError entonces showmessage('La entrada no cumple con las reglas')
demás
Application.ShowException(E); {Llamar al manejo de excepciones predeterminado}
fin;
3. Asigne un valor al evento OnException de Tapplication en el evento OnCreate de Form1:
procedimiento TForm1.FormCreate(Remitente: TObject);
comenzar
Aplicación.OnException :=MiExcepción;
fin;
4. Guarde y ejecute el programa, ingrese uno o dos números en el cuadro MaskEdit, presione Entrar y aparecerá un cuadro de mensaje en chino.
Reemplace el cuadro de aviso original en inglés.
4. Aquí nos gustaría recordar a todos que presten atención a tres puntos:
1.Delphi resume todas las excepciones en una clase, es decir, clase de excepción (Cada excepción específica se considera una excepción).
Un caso especial, en sysutils.pas en el directorio c:archivos de programa orlandDelphi 3source tlsys
Existe una definición de clase de excepción.
2. El objeto Tapplication proporciona un proceso HandleException para manejar errores no controlados que se evocan en el programa.
Eventos de excepción, cuando asignamos un valor al evento OnException de Tapplication, HandleException llamará al nuevo
Procedimiento para reemplazar la visualización de mensajes de error predeterminados. Somos libres de organizar el contenido mostrado en nuestro propio proceso para lograr Han.
efecto de transformación.
3. Usamos la declaración de juicio IF para obtener la excepción especificada. Podemos usar un método simple para obtener el nombre de la excepción especificada.
Volviendo al ejemplo del principio del artículo, aquí seleccionamos la opción Interrumpir en excepción, ejecutamos el programa nuevamente e ingresamos
Los números incorrectos hacen que MaskEdit1 genere una excepción y aparecerá la siguiente ventana:
El EDBEditError en la segunda fila de la ventana es el nombre de la excepción. El código en el programa de este artículo:
si E es EDBEditError entonces showmessage('La entrada no cumple con los requisitos')
Fue escrito en base a este nombre. Aquí es donde puede obtener información cuando no sabe el nombre exacto de la excepción. Usando esto
Tenga cuidado al manejar eventos de excepción porque ha reemplazado el manejo de excepciones predeterminado de Delphi.
Esto puede provocar que el sistema falle.
El programa anterior se ejecuta correctamente en Windows 95 Delphi 3.0.