Ex

Exceções em Elixir

8 exercícios

Sobre Exceções

O Comportamento de exceção define como os errors são lançados e apresentados.

Inclui duas funções de callback opcionais:

  • message/1 transforma a estrutura de erro numa mensagem legível.
  • exception/1 cria a mensagem a partir do 2.º argumento de raise/2, permitindo que a mensagem seja modificada.

Os erros definidos:

  • Partilham o nome do módulo em que são implementados.
  • São uma extensão do tipo de estrutura.
  • Têm um campo :message.
  • Podem ser usados com raise/1 e raise/2 para lançar o erro pretendido

Definir uma exceção

Para definir uma exceção a partir de um módulo de erro, usa a 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

Utilizar exceções

Os erros definidos podem ser usados como um erro incorporado, através de raise/1 ou 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 via GitHub A ligação abre numa nova janela ou separador

Aprende Exceções

A prática está bloqueada

Desbloqueia mais 2 exercícios para praticares Exceções