Tracks
/
Elixir
Elixir
/
Temario
/
Excepciones
Ex

Excepciones en Elixir

8 ejercicios

Acerca de Excepciones

El comportamiento de las excepciones define cómo se lanzan y se muestran los errors.

Incluye dos callbacks opcionales:

  • message/1 transforma el struct de error en un mensaje legible.
  • exception/1 crea el mensaje a partir del segundo argumento de raise/2, lo que permite modificar el mensaje.

Errores definidos:

  • Comparten el nombre del módulo en el que se implementan.
  • Son una extensión del tipo struct.
  • Tienen un campo :message.
  • Se pueden usar con raise/1 y raise/2 para lanzar el error deseado.

Definir una excepción

Para definir una excepción a partir de un módulo de error, usa la macro defexception:

# Defines a minimal error, with the name `MyError`
defmodule MyError do
  defexception message: "error"
end

# Defines an error with a customized exception/1 function
defmodule MyCustomizedError do
  defexception message: "custom error"

  @impl true
  def exception(value) do
    case value do
      [] ->
        %MyCustomizedError{}

      _ ->
        %MyCustomizedError{message: "Alert: " <> value}
    end
  end
end

Usar las excepciones

Los errores definidos se pueden usar igual que un error integrado, con raise/1 o con raise/2:

raise MyError
# => ** (MyError) error

raise MyError, "an error occurred"
# => ** (MyError) an error occurred

raise MyCustomizedError
# => ** (MyCustomizedError) "custom error"

raise MyCustomizedError, "a very bad error occurred"
# => ** (MyCustomizedError) Alert: a very bad error occurred
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Excepciones

La práctica está bloqueada

Desbloquea 2 ejercicios más para practicar Excepciones