El tratamiento de errores es una parte esencial del desarrollo de software, ya que permite manejar situaciones inesperadas de manera controlada y predecible. Scala proporciona herramientas como Try, Option, y Either para trabajar con errores de manera funcional, evitando el uso excesivo de excepciones.


Excepciones en Scala

Las excepciones en Scala son similares a las de Java, ya que ambos lenguajes comparten la JVM.

Lanzar y Capturar Excepciones

try {
  val resultado = 10 / 0
  println(resultado)
} catch {
  case e: ArithmeticException => println("Error: División por cero.")
  case e: Exception           => println(s"Error general: ${e.getMessage}")
} finally {
  println("Operación finalizada.")
}


Manejo Funcional de Errores

Scala fomenta un enfoque funcional para manejar errores mediante Try, Option, y Either.

1. Try

El tipo Try representa una operación que puede fallar. Tiene dos posibles estados:

Ejemplo:

import scala.util.{Try, Success, Failure}

val resultado = Try(10 / 0)

resultado match {
  case Success(valor) => println(s"Resultado: $valor")
  case Failure(e)     => println(s"Error: ${e.getMessage}")
}

Métodos Útiles de Try

val seguro = Try(10 / 2).getOrElse(0) // Devuelve 0 si ocurre un error
println(seguro) // Salida: 5

val mensaje = Try(10 / 0).fold(
  e => s"Falló con error: ${e.getMessage}",
  v => s"Éxito: $v"
)
println(mensaje) // Salida: Falló con error: / by zero