Bloques intentar/capturar
Sintaxis general
Sección titulada «Sintaxis general»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
capturares obligatorio cuando utilizasintentar. finalmentees opcional, pero recomendado cuando debes liberar recursos.
Acceder a la información de la excepción
Sección titulada «Acceder a la información de la excepción»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()}")}Ejemplo completo
Sección titulada «Ejemplo completo»// Definimos una función que puede lanzar una excepciónnú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ónintentar { 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.")}Múltiples excepciones
Sección titulada «Múltiples 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.
Re-lanzar excepciones
Sección titulada «Re-lanzar excepciones»Puedes propagar una excepción después de procesarla.
} capturar (excepcion error) { consola.mostrar_advertencia("Reintentando") lanzar error.mensaje}Consejos
Sección titulada «Consejos»- Limita el tamaño del bloque
intentarpara identificar con precisión dónde ocurre el problema. - Registra información adicional antes de lanzar excepciones críticas.
- Aprovecha el bloque
finalmentepara cerrar conexiones o limpiar estructuras temporales.