3.4 · Gestión de errores y depuración

Nivel 3 · Avanzado: WLangage en profundidad

3.4Gestión de errores y depuración

Objetivo: Hacer robusta la aplicación con QUAND EXCEPTION y localizar los defectos con el depurador y un método fiable.
Tiempo estimado: 11 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

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.

Error frecuente de interpretación: «Un error funcional siempre se ve; QUAND EXCEPTION basta para protegerlo todo; y depurar consiste en modificar el código al azar hasta que desaparezca el síntoma». No, triple error. El error funcional es precisamente invisible: el programa funciona y produce un resultado falso. QUAND EXCEPTION intercepta un error de ejecución, pero también hay que comprobar los retornos HFSQL y prever un repliegue. Y el azar no es un método: se reproduce, se aísla, se comprende la causa real y después se corrige y se verifica.
Método de depuración Reproducir, aislar, comprender, corregir y verificar. Reproducir caso fiableAislar perímetro yvariablesComprender causa realCorregir y despuésverificar
Reproducir, aislar, comprender, corregir y verificar.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Yacine, desarrollador WinDev en una pyme de venta de material eléctrico en Orán, ve fallar una escritura de pedido cuando el servidor HFSQL no está disponible. 2) Enmarca la operación en QUAND EXCEPTION, comprueba el retorno de la consulta, registra el detalle técnico en el journal y muestra al usuario un mensaje comprensible. 3) Ante un total falso, reproduce el caso con los mismos datos, pone un punto de interrupción, avanza paso a paso, aísla la línea sin precio, corrige la causa y después verifica que ningún otro pedido haya sufrido una regresión. Lección: interceptar y comprobar hace robusto el código; el método, no el azar, encuentra la causa.

🔎 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

  1. Enmarque las operaciones arriesgadas (archivo, red, conversión, cálculo) y compruebe los retornos HFSQL, como Yacine.
  2. Coloque un punto de interrupción antes de la zona sospechosa, avance paso a paso e inspeccione las variables.
  3. Aplique el método: reproducir, aislar, comprender la causa real, corregir y después verificar.
  4. Sustituya los mensajes técnicos por un mensaje comprensible y registre el detalle en el journal para el diagnóstico.
Su aplicación resiste los imprevistos, informa correctamente al usuario y dispone de un método fiable para corregir los defectos.

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.

Lista de salida de la sección
  • 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.
Autoevaluación 1-5: ¿compruebo los retornos en lugar de suponer?Autoevaluación 1-5: ¿busco la causa real, no el síntoma?

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.

Comprueba tu comprensión

¿Para qué sirve el mecanismo QUAND EXCEPTION?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 3Preguntas inéditas y más difíciles para validar tus conocimientos