Gestión de errores mejorada en 4D Code

Traducido automáticamente de Deepl

A partir de v20R2 es posiblelanzar errores en el código 4D.

Estos errores se comportan como cualquier error 4D: activan un diálogo de error o pueden ser manejados en un método ON ERR CALL.

Esta característica le facilitará la vida porque podrá mejorar la calidad de su código detectando proactivamente los errores tan pronto como se produzcan. También podrás manejar mejor el registro de errores.

Antes de entrar en detalles, es importante tener en cuenta que esta característica es el primer paso hacia el logro de una sólida gestión de errores.

Ahora, ¡entremos en los detalles!

Esta función se basa en un nuevo comando throw. Este comando puede ser utilizado de diferentes maneras, detalladas a continuación y en el HDI.

HDI_THROW_ERRORS

Cómo lanzar y gestionar errores

Los errores lanzados con el comando throw se comportan como cualquier otro error 4D. En el ejemplo de abajo no se ha configurado ningún método ON ERR CALL.

Se lanza un error con un código y una descripción, lanzando un diálogo de error.

throw(1; "Esto es un error")

En este otro ejemplo, se ha configurado un método ON ERR CALL, y el error lanzado se puede obtener con el comando Last errors.

ON ERR CALL("handleErrors")
throw (1; "Esto es un error")

blank

El comando throw en detalle

Este nuevo comando puede ser llamado de diferentes maneras de acuerdo a tus necesidades.

Lanzar errores predefinidos.

Puede lanzar errores predefinidos establecidos en los archivos XLF de su proyecto. Para ello, pase un objeto como parámetro al comando throw. Este objeto debe contener las propiedades

  • componentSignatureel código del componente que provoca el error
  • errCodeel código del error

Se busca en los archivos XLF del proyecto un mensaje de error que coincida con el resname ERR_componentSignature_errCode, y se lanza el error.

El mensaje de error puede utilizar valores de marcador de posición dinámicos. En su archivo XLF, especifique el nombre del marcador de posición entre llaves {}. A continuación, en el objeto de error, añada una propiedad cuyo nombre sea el nombre del marcador de posición y proporcione su valor.

Ejemplo:

var $file : 4D.File

ON ERR CALL("handleError")

$file:=File("/PROJECT/HDI file")

If (Not($file.exists))
	throw({componentSignature: "HDI1"; errCode: 1; name: "HDI file"; path: "/Project"})
End if 

Este es un ejemplo del archivo Errors.xlf traducido al francés:

<trans-unit id="1" resname="ERR_HDI1_1">
<source>The file &quot;{name}&quot; is not found in {path}.</source>
<target>Le fichier &quot;{name}&quot; est introuvable dans {path}.</target>
</trans-unit>

El método ON ERR CALL puede proceder con el error:

blank

Utilizar el modo diferido

El uso de la propiedad booleana deferred en el parámetro objeto le permite apilar los errores lanzados y proceder con ellos globalmente más tarde. En el método siguiente, el método ON ERR CALL se llama al final de la ejecución del método actual. Procede con los errores apilados devueltos por el comando Last errors.

var $file : 4D.File

ON ERR CALL("handleError")

$file:=File("/PROJECT/HDI file")

If (Not($file.exists))
	throw({componentSignature: "HDI1"; errCode: 1; name: "HDI file"; path: "/Project"; deferred: True})
	throw({componentSignature: "HDI1"; errCode: 2; name: "HDI file"; path: "/Project"; deferred: True})
End if 

He aquí una muestra del fichero Errors.xlf traducido al francés:

 <trans-unit id="1" resname="ERR_HDI1_1">
<source>The file &quot;{name}&quot; is not found in {path}.</source>
<target>Le fichier &quot;{name}&quot; est introuvable dans {path}.</target>
</trans-unit>
<trans-unit id="2" resname="ERR_HDI1_2">
<source>Try another file name</source>
<target>Essayez avec un autre fichier</target>
</trans-unit>

El método handleErrors se llama una vez y puede obtener los errores apilados gracias al comando Last errors:

blank

Una variación del modo diferido es llamar al comando throw sin parámetros. Esto es útil en un método ON ERR CALL.

Apila los errores actuales hasta que finaliza el método actual. Entonces se llama al método ON ERR CALL para proceder con los errores apilados.

Encontrará esto en el ejemplo concreto del ID H.

Descargue el IDH para aprender más acerca de cómo los errores pueden ser manejados para proporcionar una retroalimentación adecuada al usuario.

Avatar
• Propietario de producto - Marie-Sophie Landrieu-Yvert ingresó al equipo de 4D Product como Propietario de producto en 2017. Como tal, está a cargo de escribir las historias de los usuarios y luego traducirlas en especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Marie-Sophie se graduó en la Escuela de Ingeniería de ESIGELEC y comenzó su carrera como ingeniera en IBM en 1995. Participó en varios proyectos (de mantenimiento y creación) y trabajó como desarrolladora de Cobol. Luego trabajó como diseñadora de UML y desarrolladora de Java. Sus principales funciones fueron analizar y redactar requisitos funcionales, coordinar los equipos de negocio y de desarrollo.