Ec

Eccezioni in Elixir

8 esercizi

Informazioni su Eccezioni

Il comportamento Exception definisce come vengono sollevati e mostrati gli errors.

Include due callback opzionali:

  • message/1 trasforma lo struct dell'errore in un messaggio leggibile.
  • exception/1 crea il messaggio a partire dal secondo argomento di raise/2, permettendo di modificare il messaggio.

Gli errori definiti:

  • Condividono il nome del modulo in cui sono implementati.
  • Sono un'estensione del tipo struct.
  • Hanno un campo :message.
  • Possono essere usati con raise/1 e raise/2 per sollevare l'errore desiderato

Definire un'eccezione

Per definire un'eccezione a partire da un modulo di errore, 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

Usare le eccezioni

Gli errori definiti possono essere usati come un errore integrato, usando raise/1 oppure 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
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Eccezioni

La pratica è bloccata

Sblocca 2 altri esercizi per esercitarti su Eccezioni