3.4Gestión de errores y depuración
Lo esencial en 30 segundos
- Tres familias de errores: compilación, ejecución y funcional — esta última es la más peligrosa porque nada la señala.
- QUAND EXCEPTION intercepta un error de ejecución; también se comprueban los retornos HFSQL en lugar de suponer que una escritura ha funcionado.
- Depurar = reproducir, aislar, comprender la causa real, corregir y verificar; del lado del usuario, mensaje claro y registro en el journal.
Mini-caso hilado — Yacine salva un pedido a pesar del corte
Yacine registra un pedido de material eléctrico cuando el servidor HFSQL se vuelve inaccesible. Sin precaución, la aplicación se detiene bruscamente y el usuario pierde su entrada. Enmarca la escritura en QUAND EXCEPTION, comprueba el retorno de la consulta y muestra un mensaje comprensible: «Pedido no registrado: servidor no disponible, verifique la red». El detalle técnico va al journal, no a la pantalla. Más tarde aparece un total falso en algunos pedidos: Yacine reproduce el caso con las mismas líneas, pone un punto de interrupción antes del cálculo, avanza paso a paso y descubre una línea sin precio. Anota el reflejo: interceptar, comprobar, registrar en el journal y después reproducir y aislar antes de corregir.
Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto de 48 h de la sección 3.4.
1. Tres familias de errores
Un código robusto nunca supone que todo saldrá bien. El error de compilación se detecta antes de la ejecución: falta de sintaxis, nombre desconocido. El error de ejecución surge durante el funcionamiento: división por cero, archivo ausente, red cortada, permisos insuficientes. El error funcional es el más peligroso: el programa se ejecuta pero el resultado es falso, y nada lo señala. Un total erróneo en una factura de Yacine pertenece a esta familia.
2. Interceptar y comprobar
WLangage ofrece QUAND EXCEPTION para interceptar un error de ejecución y recuperar el control en lugar de dejar que la aplicación se caiga. Pero la interceptación no sustituye la verificación: una escritura HFSQL puede fallar por un duplicado, una restricción o un bloqueo. Yacine comprueba los retornos de las funciones, prevé un comportamiento de repliegue y muestra un mensaje comprensible, nunca un código técnico en bruto. El detalle va al journal para el diagnóstico.
3. Un método de depuración
El depurador integrado ofrece puntos de interrupción, ejecución paso a paso, inspección de variables y pila de llamadas. El método importa tanto como la herramienta: reproducir el problema de forma fiable, aislar el perímetro, comprender la causa real y no el síntoma, y después corregir y verificar la ausencia de regresión. Un error que no se sabe reproducir no se puede corregir con certeza.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Interceptar, registrar en el journal, comprender
Yacine protege el registro de un pedido y después rastrea un total falso:
QUAND EXCEPTION DANS
HExecuteRequete(Req_AjoutCommande)
SI HEnDehors(Req_AjoutCommande) ALORS
Erreur("La commande n'a pas pu etre enregistree.")
FIN
FAIRE
JournalAjoute("Erreur HFSQL commande", ErreurInfo())
Info("Serveur indisponible : reessayez ou contactez le support.")
FIN
// Debogage : point d'arret avant le calcul, puis pas a pas
nTotal = CalculeTotalLignes(TAB_Lignes)
Lectura: el usuario recibe una acción que puede hacer; el journal conserva el detalle técnico.
Lección: el punto de interrupción y el paso a paso muestran dónde se vuelve falso el valor.
Vocabulario de la sección
- Error de ejecución
- Error que surge durante el funcionamiento: archivo ausente, red cortada, división por cero.
Ejemplo sencillo: La consulta HFSQL de Yacine falla porque el servidor no está disponible.
Lo que no es: una falta de sintaxis señalada antes de la ejecución.
Reflejo: fallo durante la acción → error de ejecución.
- QUAND EXCEPTION
- Mecanismo de WLangage que intercepta un error de ejecución para tratarlo con limpieza.
Ejemplo sencillo: Yacine lo usa alrededor de la escritura del pedido.
Lo que no es: dejar que la aplicación se detenga bruscamente ante el usuario.
Reflejo: recuperar el control → QUAND EXCEPTION.
- Error funcional
- Situación en la que el programa se ejecuta correctamente pero produce un resultado falso.
Ejemplo sencillo: El total de una factura es falso por culpa de una línea sin precio.
Lo que no es: una excepción que interrumpe visiblemente el tratamiento.
Reflejo: resultado falso sin caída → error funcional.
- Punto de interrupción
- Marcador colocado en el código para suspender la ejecución e inspeccionar el estado en ese punto.
Ejemplo sencillo: Yacine lo coloca antes de CalculeTotalLignes.
Lo que no es: una simple traza mostrada después del final del tratamiento.
Reflejo: observar una zona sospechosa → punto de interrupción.
- Registro en el journal
- Registro de los errores y eventos técnicos para diagnosticar a posteriori.
Ejemplo sencillo: Yacine anota el error HFSQL en el journal sin mostrarlo en pantalla.
Lo que no es: un mensaje técnico en bruto mostrado directamente al usuario.
Reflejo: diagnosticar a distancia → registrar en el journal.
En la práctica — En la práctica — Hacer robusto el código y depurar
- Enmarque las operaciones arriesgadas (archivo, red, conversión, cálculo) y compruebe los retornos HFSQL, como Yacine.
- Coloque un punto de interrupción antes de la zona sospechosa, avance paso a paso e inspeccione las variables.
- Aplique el método: reproducir, aislar, comprender la causa real, corregir y después verificar.
- Sustituya los mensajes técnicos por un mensaje comprensible y registre el detalle en el journal para el diagnóstico.
Guion paso a paso — rastrear un total falso como Yacine (4 min)
1) Reproduzca el problema con los mismos datos y las mismas acciones. 2) Coloque un punto de interrupción antes del cálculo sospechoso y avance paso a paso. 3) Inspeccione las variables: localice la línea cuyo precio está vacío o mal convertido. 4) Corrija la causa real, no el síntoma. 5) Verifique el caso corregido y la ausencia de regresión en los demás pedidos.
Mantenga este reflejo: un error no reproducible no se puede corregir con certeza.
Modelo para copiar y pegar — la ficha de errores y depuración de Yacine
Erreurs : compilation / execution / fonctionnelle (la plus dangereuse)
Intercepter: QUAND EXCEPTION + tester les retours HFSQL
Utilisateur: message comprehensible ; detail technique dans le journal
Methode : reproduire -> isoler -> comprendre -> corriger -> verifier
Outils : point d'arret, pas a pas, variables, pile d'appels, trace
Un servidor inaccesible
Yacine intercepta el error, lo registra en el journal e invita al usuario a reintentar.
Un total falso
Yacine reproduce, aísla la línea sin precio y corrige la causa real.
Un mensaje en bruto
Yacine sustituye «Error 0x8004» por un mensaje claro y accionable.
Un error intermitente
Yacine busca lo que varía (volumen, puesto, permisos) para reproducirlo de forma fiable.
✓ Buenas prácticas
- Comprobar siempre los retornos de las operaciones arriesgadas.
- Reproducir antes de corregir.
- Mostrar un mensaje claro y registrar el detalle en el journal.
✗ Errores frecuentes
- Suponer que una escritura HFSQL ha funcionado.
- Corregir el síntoma sin la causa.
- Mostrar un código técnico en bruto al usuario.
Puntos clave
- Compilación, ejecución y funcional: tres familias con consecuencias diferentes.
- QUAND EXCEPTION intercepta; los retornos HFSQL se comprueban.
- Depurar = reproducir, aislar, comprender, corregir, verificar.
- Mensaje de usuario comprensible y registro del detalle técnico en el journal.
Reto 48 h — aplícalo mañana
Como Yacine, enmarque una operación arriesgada de su aplicación (escritura HFSQL, lectura de archivo, conversión) en QUAND EXCEPTION, compruebe su retorno y registre el detalle en el journal. Muestre un mensaje comprensible. Después tome un error real: repróduzcalo, coloque un punto de interrupción, avance paso a paso y anote en una frase la causa real que ha encontrado.
- Distingo error de compilación, de ejecución y funcional.
- Sé interceptar un error y comprobar un retorno HFSQL.
- Aplico un método de depuración en cuatro etapas.
Preguntas frecuentes
¿Cómo tratar un error sin hacer caer la aplicación?
Anticipando las operaciones arriesgadas: acceso a archivos, red, base de datos, conversiones. Enmárquelas con QUAND EXCEPTION, compruebe los retornos, prevea un comportamiento de repliegue y registre el detalle técnico en el journal. El usuario debe recibir un mensaje comprensible y accionable, nunca un código técnico en bruto. Para varias escrituras relacionadas, una transacción evita un estado incoherente.
¿Cuál es el mejor método para encontrar el origen de un error?
Reproducir de forma fiable, aislar el perímetro, comprender la causa real y después corregir y verificar la ausencia de regresión. El depurador —punto de interrupción, paso a paso, inspección de variables— apoya este método, no lo sustituye. Un error que no se sabe reproducir no se puede corregir con certeza: empiece siempre por las condiciones exactas.
¿Para qué sirve el mecanismo QUAND EXCEPTION?