Trilhas
/
Elixir
Elixir
/
Programa
/
Exceções
Ex

Exceções em Elixir

8 exercícios

Sobre Exceções

O Exception Behaviour define como os errors são lançados e exibidos.

Ele inclui dois callbacks opcionais:

  • message/1 transforma a struct de erro em uma mensagem legível.
  • exception/1 cria a mensagem a partir do segundo argumento em raise/2, permitindo que a mensagem seja modificada.

Erros definidos:

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

Definindo uma exceção

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

Usando exceções

Erros definidos podem ser usados como um erro embutido, com 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 O link abre em uma nova janela ou aba

Aprenda Exceções

A prática está bloqueada

Desbloqueie mais 2 exercícios para praticar Exceções