Manejo de Errores
Las cosas salen mal. Un usuario ingresa algo inesperado, un cálculo llega a un caso imposible, un recurso no está disponible. Clean Language te da una manera limpia y legible de manejarlo.
Lanzas un error con error(), y lo capturas con onError:
functions:
integer divide(integer a, integer b)
if b == 0
error("Cannot divide by zero")
return a / b
start:
integer result = divide(10, 2) onError -1
print(result.toString())
integer bad = divide(10, 0) onError -1
print(bad.toString())5
-1La parte onError -1 significa: si algo sale mal, usa -1 en su lugar. Sin fallos, sin misterios — solo un valor de respaldo predecible.
Para más que solo un valor de respaldo, usa onError: con un bloque:
functions:
integer divide(integer a, integer b)
if b == 0
error("Cannot divide by zero")
return a / b
start:
integer result = divide(10, 0) onError:
print("Something went wrong — using default")
-1
print(result.toString())Something went wrong — using default
-1La última línea del bloque onError: es el valor que se usa como resultado. Puedes hacer cualquier cantidad de trabajo — registro, limpieza — y luego proporcionar el respaldo en la última línea.
Resumen rápido
- Usa error("mensaje") dentro de una función para lanzar un error
- expresión onError valorDeRespaldo — captura y proporciona un respaldo simple
- expresión onError: con un bloque — captura y ejecuta cualquier código, la última línea es el respaldo
- Los errores se propagan hacia arriba en la cadena de llamadas hasta que algo los captura
- Si nada captura un error, el programa se detiene con un mensaje de error