typestar

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

  1. on: ZeroDivide do: atrapa por clase de excepción.
  2. El bloque manejador recibe la excepción y responde un valor.
  3. 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.

Escribe este fragmento

Paso 2 de 3 en Reflexión; paso 27 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →