|
|
|
|
- Presentación
- Declarando varios procesos de excepciones generales
- Declarando las Process es de excepciones generales en el mismo Process
- Declarando los procesos de excepción en diferentes procesos
- Anidando los procesos de excepción en diferentes procesos: gestionando la excepción a través de un nivel superior
- Principales observaciones
- Una excepción Process sólo puede ser utilizada una vez
- Calidad del código WLanguage para procesar la excepción
- La calidad del código después de una excepción Process
- Caso especial
- Proceso de excepción y Component
- Proceso de excepción e subprocesos
- Funciones de gestión de excepciones generales
Mecanismo general de excepción
Una Process de excepción general está disponible para todos los componentes del objeto con el que es associated. Esta excepción Process puede ser utilizada siempre y cuando el objeto esté disponible. Un Process de excepción general puede ser declarado en cualquier Process. Después de la ejecución de una excepción Process, se ejecuta el código WLanguage que sigue al Process. Por ejemplo: - Si la excepción Process se declara en el código de inicialización del proyecto, es válida para cualquier error que se produzca en el proyecto.
- Si el proceso de excepción se declara en el código de declaración de las variables globales de una ventana, Page o reporte, es válido para cualquier error que se produzca en la ventana, en el Page, en un control de ventana, en un control Page o en un Procedure local a la ventana o al Page. Esta excepción Process deja de ser válida cuando se cierra la ventana o el Page.
- Si se declara la excepción Process en cualquier Process, es válida para cualquier error que ocurra en este Process. Esta excepción Process ya no será válida una vez que se complete el Process. Por lo tanto, una excepción Process declarada en el código de clic de un botón sólo será válida en este Process y en todos los procedimientos llamados desde este Process.
Declarando varios procesos de excepciones generales Declarando las Process es de excepciones generales en el mismo Process La segunda excepción Process reemplazará a la primera excepción Process de la declaración de la segunda excepción Process. Ejemplo: En el ejemplo Procedure, si se produce un error: - En <Código1>: no se habilita la gestión de excepciones a menos que se haya definido una excepción Procedure en el código de llamada (en la ventana actual o en la Page actual o en el proyecto).
- En <Código 2>: la excepción activa Process es <Process de la excepción 1...
- En <Código 3>: la excepción activa Process es <Process de la excepción 2...
PROCEDURE Example() <"Code 1"> WHEN EXCEPTION <Process of Exception 1> END <"Code 2"> WHEN EXCEPTION <Process of Exception 2> END <"Code 3"> Declarando los procesos de excepción en diferentes procesos Si se declara la excepción Process es en los objetos incrustados (proyecto y ventana, proyecto y página, ventana y control o página y control por ejemplo), la excepción Process del objeto más pequeño oculta la excepción principal Process durante la vida de este objeto. Ejemplo: Si se declaran los dos siguientes procesos de excepción: - excepción Process A declarada en el código de inicialización de un proyecto,
- excepción Process B declarada en el código de declaración de variables globales de una ventana o Page.
Para todos los errores que se produzcan en la ventana o en la página, se utilizará la excepción Process B y se ocultará la excepción Process A. Anidando los procesos de excepción en diferentes procesos: gestionando la excepción a través de un nivel superior Si se declara la excepción Process es en objetos incrustados (proyecto y ventana, proyecto y página, ventana y control o página y control por ejemplo), el error puede ser gestionado en la excepción Process de nivel superior. Todo lo que tienes que hacer es usar la palabra clave EXCEPCIÓN en la excepción Process. Ejemplo: // Project initialization code WHEN EXCEPTION // Stop the application EndProgram() END
// Global procedure ControlValue // Returns the value of the control or "" if the control does not exist PROCÉDURE ControlValue(ControlName) WHEN EXCEPTION // For the UnknownControl error, "" is returned IF ExceptionInfo(errCode) = UnknownControl THEN RESULT "" // For another error, the error manager of the project is called EXCEPTION END
Principales observaciones Una excepción Process sólo puede ser utilizada una vez Una excepción Process sólo puede ser utilizada una vez. Si se produce una segunda excepción, la excepción Process no se ejecutará. Si existe una excepción Process de nivel superior, se ejecutará esta excepción Process. Para volver a activar una excepción Process una vez utilizada, llame a ExceptionEnable. Atención: esta función debe ser usada con mucho cuidado. Calidad del código WLanguage para procesar la excepción Una excepción Process no puede ser usada dentro de una excepción WLanguage Process. Le recomendamos que compruebe la calidad del código en los procesos de excepción, ya que cualquier error provocará la visualización de la ventana estándar/Page del mecanismo de seguridad de WLanguage. La calidad del código después de una excepción Process Después de la ejecución de una excepción Process, el código WLanguage que sigue al Process se ejecuta. Le recomendamos que preste atención a la calidad de este código (para evitar que aparezca un mensaje de error). Ejemplo: En el siguiente código, {"Control1"}..Valor = 5 activa la excepción Process. Al final de la excepción Process, se vuelve a ejecutar el mismo Line de código: la excepción ya fue procesada y el mecanismo de seguridad de WLanguage se activa. // Exception process WHEN EXCEPTION // Process to perform if an exception occurs Trace("Error") END // Programming error: the Control1 control does not exist {"Control1"}..Value = 5
Para evitar este problema, al final del proceso de excepción, se recomienda: - Asegúrate de que el problema se corrija y que no vuelva a ocurrir.
- Use las palabras clave VOLVER y RESULTADO para salir de la actual Process.
- Utilizar SetFocusAndReturnToUserInput para devolver control al usuario.
- Utilice EndProgram para cerrar la aplicación.
Una excepción general Process no puede ser declarada en declaraciones compuestas como: Proceso de excepción y Component Si se ejecuta una excepción general Process tanto en el código de inicialización del Component como en el código de inicialización del proyecto que contiene el Component, se ejecutará la excepción Process del proyecto cuando se produzca un error en uno de los elementos Component. Proceso de excepción e subprocesos Si se realiza un proceso de excepción general en el código de inicialización del proyecto, se disparará si se produce una excepción: - en el subproceso principal,
- en un subproceso secundario iniciado con la función ThreadExecute.
Sin embargo, si el subproceso secundario dispara una excepción, no se podrá conocer su origen con la función ExceptionInfo en el código del proyecto. Para conocer el origen de una excepción en un subproceso secundario, se debe incluir el proceso de la excepción en el subproceso secundario. Funciones de gestión de excepciones generales Las funciones específicas de la gestión de excepciones pueden utilizarse con los procesos de excepción generales:
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|