Excepciones en Smalltalk
signal lanza; on:do: maneja; ensure: corre siempre.
"Exceptions are messages too: signal raises, on:do: handles."
| result |
result := [10 / 0]
on: ZeroDivide
do: [:ex | Transcript show: 'Caught ', ex class name; cr. -1].
Transcript show: 'Answered ', result printString; cr.
[Error signal: 'the chase slipped']
on: Error
do: [:ex | Transcript show: 'Press error: ', ex messageText; cr].
"ensure: runs its block no matter how the protected block ends."
[Transcript show: 'printing'; cr]
ensure: [Transcript show: 'washing up'; cr].
Cómo funciona
on: ZeroDivide do:atrapa por clase de excepción.- El bloque manejador recibe la excepción y responde un valor.
ensure:es la limpieza que corre en cada salida.
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 481
- Tokens
- 79
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 86 segundos.
Paso 2 de 3 en Reflexión; paso 27 de 31 en Fundamentos del lenguaje.