Διαδρομές
/
Elixir
Elixir
/
Ύλη
/
Εξαιρέσεις
Εξ

Εξαιρέσεις σε Elixir

8 ασκήσεις

Σχετικά με την έννοια Εξαιρέσεις

Η Συμπεριφορά Εξαίρεσης ορίζει πώς πετιούνται και εμφανίζονται τα errors.

Περιλαμβάνει δύο προαιρετικά callbacks:

  • Το message/1 μετατρέπει το struct του σφάλματος σε αναγνώσιμο μήνυμα.
  • Το exception/1 δημιουργεί το μήνυμα από το 2ο όρισμα στο raise/2, επιτρέποντας την τροποποίηση του μηνύματος.

Τα ορισμένα σφάλματα:

  • Μοιράζονται το όνομα του module στο οποίο υλοποιούνται.
  • Αποτελούν επέκταση του τύπου struct.
  • Έχουν ένα πεδίο :message.
  • Μπορούν να χρησιμοποιηθούν με raise/1 και raise/2 για να πετάξουν το επιθυμητό σφάλμα

Ορισμός μιας εξαίρεσης

Για να ορίσεις μια εξαίρεση από ένα module σφάλματος, χρησιμοποίησε τη μακροεντολή 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

Χρήση εξαιρέσεων

Τα ορισμένα σφάλματα μπορούν να χρησιμοποιηθούν όπως ένα ενσωματωμένο σφάλμα, με raise/1 ή 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
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Εξαιρέσεις

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 2 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Εξαιρέσεις