Lazando excepciones

¿Interesante, no? No solamente tuvimos un mensaje de error claro que nos permite entender qué sucedió, sino que además evitó que se deposite dinero en la cuenta de destino. . ¿Cómo fue esto posible?

La primera versión del código de cuentaOrigen se veía aproximadamente así:

object cuentaOrigen {
  var saldo = 20
  method debitar(monto) {
    if (monto <= saldo) {
      saldo -= monto
    }
  }
}

Pero la segunda versión se ve así:

object cuentaOrigen {
  var saldo = 20
  method debitar(monto) {
    if (monto > saldo) {
      self.error("No se puede debitar, porque el monto $"+monto+" es mayor al saldo $" +saldo)
    }
    saldo -= monto
  }
}

Mediante la sentencia self.error(mensaje) lo que hicimos fue lanzar una excepción: provocar un error explícito que interrumpe el flujo del programa.

¡Mas despacio cerebrito! Probá enviar mensajeRaro a objetoRaro (que ya cargamos por vos) en la consola...

object objetoRaro {
   method mensajeRaro() {
      self.error("foo")
      return 4
   } 
}

...y pensá: ¿se retorna el 4? ¿Por qué?

Tenés que iniciar sesión antes de empezar a enviar tus soluciones