コンテンツにスキップ

ブロック試行/キャプチャ

intentar {
// Código que podría lanzar una excepción
} capturar (excepcion error) {
// Manejo de la excepción
} finalmente {
// Código opcional que siempre se ejecuta
}
  • El bloque capturar es obligatorio cuando utilizas intentar.
  • finalmente es opcional, pero recomendado cuando debes liberar recursos.

El objeto excepcion incluye:

  • mensaje: texto descriptivo.
  • linea: número de línea donde ocurrió el error.
  • llamadas: lista con la pila de llamadas.
intentar {
número resultado = dividir(10, 0)
} capturar (excepcion error) {
consola.mostrar_error(t"Mensaje: {error.mensaje}")
consola.mostrar(t"Línea: {error.linea}")
consola.mostrar(t"Pila: {error.llamadas.texto()}")
}
// Definimos una función que puede lanzar una excepción
número dividir(número numerador, número denominador){
si (denominador == 0) {
lanzar "Error: División por cero no permitida"
}
retornar numerador / denominador
}
// Tratar la excepción al llamar a la función
intentar {
número resultado = dividir(10, 0)
consola.mostrar("Resultado: " + resultado)
} capturar (excepcion e){
// Obtenemos el mensaje de la excepción y lo imprimimos en la consola
consola.mostrar(e.mensaje)
// También podemos mostrar la pila de llamadas para ver dónde ocurrió la excepción
consola.mostrar("Pila de llamadas:" + e.llamadas.texto())
}
finalmente {
// Este bloque se ejecuta siempre, independientemente de si ocurrió una excepción o no
// No es obligatorio, pero es útil para limpiar recursos o mostrar mensajes finales
consola.mostrar("Fin del manejo de excepciones.")
}

Actualmente no existe clasificación jerárquica de excepciones. Todas las excepciones capturadas exponen al menos el mensaje y una lista de llamadas (actualmente vacía). Si necesitas categorizar errores, agrega información al texto del mensaje.

Puedes propagar una excepción después de procesarla.

} capturar (excepcion error) {
consola.mostrar_advertencia("Reintentando")
lanzar error.mensaje
}
  • Limita el tamaño del bloque intentar para identificar con precisión dónde ocurre el problema.
  • Registra información adicional antes de lanzar excepciones críticas.
  • Aprovecha el bloque finalmente para cerrar conexiones o limpiar estructuras temporales.