Elixir 1.7 - Exception

अपवाद व्यवहार




elixir

अपवाद व्यवहार

थ्रो / कैच / निकास और अपवादों को प्रारूपित करने के लिए कार्य।

ध्यान दें कि अमृत में स्टैकट्रैक केवल __STACKTRACE__/0 चर का उपयोग करके कैच और बचाव के अंदर उपलब्ध हैं।

इस मॉड्यूल में format* फ़ंक्शन द्वारा लौटाए गए विशेष प्रारूप पर भरोसा न करें। एलिक्सिर के टूल चेन को बेहतर सूट करने के लिए उन्हें भविष्य के रिलीज में बदला जा सकता है। दूसरे शब्दों में, इस मॉड्यूल में फ़ंक्शंस का उपयोग करके यह गारंटी दी जाती है कि आप अपवादों को वर्तमान एलिक्सिर संस्करण के रूप में उपयोग करेंगे।

सारांश

प्रकार

kind()

फ़ार्मेटिंग फ़ंक्शंस द्वारा संभाला गया प्रकार

stacktrace()
stacktrace_entry()
t()

अपवाद प्रकार

कार्य

दोष (तरह, त्रुटि, स्टैकट्रेस)

अतिरिक्त डिबगिंग के अपवादों की जानकारी देता है

blame_mfa (मॉड्यूल, फ़ंक्शन, आर्ग्स)

दिए गए मॉड्यूल, फ़ंक्शन और तर्कों के आह्वान को दोष देता है

exception?(term)

यदि दिया गया term अपवाद है तो true है

प्रारूप (प्रकार, पेलोड, स्टैकट्रेस \\ [])

सामान्यीकृत और प्रारूप / त्रुटियां / निकास और स्टैकट्रैक फेंकते हैं

format_banner (तरह, अपवाद, स्टैकट्रेस \\ [])

किसी भी फेंक / त्रुटि / निकास को सामान्य करता है और प्रारूपित करता है

format_exit(reason)

बाहर निकलने का प्रारूप। यह एक स्ट्रिंग लौटाता है

format_fa (मज़ेदार, शानदार)

एक अनाम फ़ंक्शन और arity प्राप्त करता है और इसे स्टैक्ट्रेक्ट्स में दिखाया गया है। तर्क भी तर्कों की एक सूची हो सकती है

format_file_line (फ़ाइल, लाइन, प्रत्यय \\ "")

दिए गए file और line को प्रारूपित करता है जैसा कि स्टैकट्रैक्स में दिखाया गया है। यदि कोई मान nil , तो उन्हें छोड़ दिया गया है

format_mfa (माड्यूल, फन, एरिटी)

एक मॉड्यूल, मज़ा और एरीटी प्राप्त करता है और इसे स्टैकट्रेट्स में दिखाया गया है। तर्क भी तर्कों की एक सूची हो सकती है

format_stacktrace (ट्रेस \\ nil)

स्टैक्ट्रेस को प्रारूपित करता है

format_stacktrace_entry(entry)

स्टैकट्रेस प्रविष्टि प्राप्त करता है और इसे एक स्ट्रिंग में प्रारूपित करता है

message(exception)

exception लिए संदेश देता exception

सामान्यीकृत करें (प्रकार, पेलोड, स्टैकट्रेस \\ [])

एक अपवाद को सामान्य करता है, एरलैंग अपवादों को एलिक्सिर अपवादों में परिवर्तित करता है

कॉलबैक

दोष (टी, स्टैकट्रेस)

अपवाद संरचना को बढ़ाने के लिए Exception.blame/3 से कॉल किया गया

exception(term)
message(t)

प्रकार

मेहरबान()

kind() :: :error | non_error_kind()

फ़ार्मेटिंग फ़ंक्शंस द्वारा संभाला गया प्रकार

स्टैक ट्रेस()

stacktrace() :: [stacktrace_entry()]

stacktrace_entry ()

stacktrace_entry() ::
  {module(), atom(), arity_or_args(), location()}
  | {(... -> any()), arity_or_args(), location()}

टी ()

t() :: %module(){:__exception__ => true, optional(atom()) => any()}

अपवाद प्रकार

कार्य

दोष (दया, त्रुटि, स्टैकट्रेस) (1.5.0 के बाद से)

blame(non_error_kind(), payload, stacktrace()) :: {payload, stacktrace()}
when payload: var
blame(:error, any(), stacktrace()) :: {t(), stacktrace()}

अतिरिक्त डिबगिंग के अपवादों की जानकारी देता है।

यह ऑपरेशन संभावित रूप से महंगा है, क्योंकि यह फाइल सिस्टम के डेटा को पढ़ता है, बीम की फाइलें, कोड का मूल्यांकन करता है और इसी तरह।

यदि अपवाद मॉड्यूल वैकल्पिक blame/2 कॉलबैक को लागू करता है, तो गणना करने के लिए इसे लागू किया जाएगा।

blame_mfa (मॉड्यूल, फ़ंक्शन, आर्ग) (1.5.0 के बाद से)

blame_mfa(module(), function(), args :: [term()]) ::
  {:ok, :def | :defp | :defmacro | :defmacrop,
   [{args :: [term()], guards :: [term()]}]}
  | :error

दिए गए मॉड्यूल, फ़ंक्शन और तर्कों के आह्वान को दोष देता है।

यह फ़ंक्शन बाइटकोड से उपलब्ध क्लॉज़ को पुनः प्राप्त करेगा और दिए गए तर्कों के खिलाफ उनका मूल्यांकन करेगा। खंडों को {args, guards} जोड़े की सूची के रूप में लौटाया जाता है {args, guards} जहां प्रत्येक तर्क और प्रत्येक शीर्ष-स्तर की स्थिति को गार्ड द्वारा अलग किया जाता है and / or दोष मेटाडेटा के साथ एक टपल में लपेटा जाता है।

यह फ़ंक्शन या तो {:ok, definition, clauses} या :error । जहाँ definition है :def :defp या :defmacrop । ध्यान दें कि इस कार्यक्षमता के लिए Erlang / OTP 20 की आवश्यकता होती है, अन्यथा :error हमेशा वापस आ जाती है।

अपवाद? (शब्द)

यदि दिया गया term अपवाद है तो true है।

प्रारूप (प्रकार, पेलोड, स्टैकट्रेस \\ [])

format(kind(), any(), stacktrace()) :: String.t()

सामान्यीकृत और प्रारूप / त्रुटियां / निकास और स्टैकट्रैक फेंकते हैं।

यह अंतिम प्रारूप उत्पन्न करने के लिए format_banner/3 और format_stacktrace/1 पर निर्भर करता है।

यदि kind {:EXIT, pid} , तो यह एक स्टैकट्रेस उत्पन्न नहीं करता है, क्योंकि इस तरह के निकास को स्टैकट्रैक्स के बिना संदेशों के रूप में पुनर्प्राप्त किया जाता है।

format_banner (तरह, अपवाद, स्टैकट्रेस \\ [])

format_banner(kind(), any(), stacktrace()) :: String.t()

किसी भी फेंक / त्रुटि / निकास को सामान्य करता है और प्रारूपित करता है।

संदेश को उसी स्वरूप में स्वरूपित और प्रदर्शित किया जाता है जैसा कि अमृत के सीएलआई द्वारा उपयोग किया जाता है।

तीसरा तर्क स्टैकट्रेस है जो अधिक जानकारी के साथ एक सामान्यीकृत त्रुटि को समृद्ध करने के लिए उपयोग किया जाता है। इसका उपयोग केवल तब किया जाता है जब एक त्रुटि होती है।

format_exit (कारण)

format_exit(any()) :: String.t()

बाहर निकलने का प्रारूप। यह एक स्ट्रिंग लौटाता है।

अक्सर निकास के अंदर त्रुटियां / अपवाद होते हैं। बाहर निकलने वाले अक्सर कॉल करने वाले से लिपटे होते हैं और स्टैकट्रैक्स भी प्रदान करते हैं। यह फंक्शन फॉर्मेट एक्ज़िट रीज़न, कॉलर और स्टैक्ट्रेस को अच्छी तरह से दिखाने का तरीका है।

format_fa (मज़ेदार, शानदार)

एक अनाम फ़ंक्शन और arity प्राप्त करता है और इसे स्टैक्ट्रेक्ट्स में दिखाया गया है। तर्क भी तर्कों की एक सूची हो सकती है।

उदाहरण

Exception.format_fa(fn -> nil end, 1)
#=> "#Function<...>/1"

format_file_line (फ़ाइल, लाइन, प्रत्यय \\ "")

दिए गए file और line को प्रारूपित करता है जैसा कि स्टैकट्रैक्स में दिखाया गया है। यदि कोई मान nil , तो उन्हें छोड़ दिया गया है।

उदाहरण

iex> Exception.format_file_line("foo", 1)
"foo:1:"

iex> Exception.format_file_line("foo", nil)
"foo:"

iex> Exception.format_file_line(nil, nil)
""

format_mfa (माड्यूल, फन, एरिटी)

एक मॉड्यूल, मज़ा और एरीटी प्राप्त करता है और इसे स्टैकट्रेट्स में दिखाया गया है। तर्क भी तर्कों की एक सूची हो सकती है।

उदाहरण

iex> Exception.format_mfa(Foo, :bar, 1)
"Foo.bar/1"

iex> Exception.format_mfa(Foo, :bar, [])
"Foo.bar()"

iex> Exception.format_mfa(nil, :bar, [])
"nil.bar()"

बेनामी फ़ंक्शन को -func / arity-anonfn-count- के रूप में सूचित किया जाता है, जहां पर एनक्लोजिंग फ़ंक्शन का नाम है। "एफ़एनसी में फंक / एरिटी में गुमनाम"

format_stacktrace (ट्रेस \\ nil)

स्टैक्ट्रेस को प्रारूपित करता है।

स्टैकट्रेस को एक तर्क के रूप में दिया जाना चाहिए। यदि नहीं, तो स्टैकट्रेस को Process.info/2 से पुनर्प्राप्त किया जाता है।

format_stacktrace_entry (प्रवेश)

format_stacktrace_entry(stacktrace_entry()) :: String.t()

स्टैकट्रेस प्रविष्टि प्राप्त करता है और इसे एक स्ट्रिंग में प्रारूपित करता है।

संदेश (अपवाद)

exception लिए संदेश देता exception

सामान्यीकृत करें (प्रकार, पेलोड, स्टैकट्रेस \\ [])

normalize(non_error_kind(), payload, stacktrace()) :: payload when payload: var
normalize(:error, any(), stacktrace()) :: t()

एक अपवाद को सामान्य करता है, एरलैंग अपवादों को एलिक्सिर अपवादों में परिवर्तित करता है।

यह एक तर्क के रूप में catch द्वारा पूरा किया जाता है और केवल सामान्य करता है :error , दूसरों के लिए अछूता पेलोड लौटाता है।

तीसरा तर्क स्टैकट्रेस है जो अधिक जानकारी के साथ एक सामान्यीकृत त्रुटि को समृद्ध करने के लिए उपयोग किया जाता है। इसका उपयोग केवल तब किया जाता है जब एक त्रुटि होती है।

कॉलबैक

दोष (टी, स्टैकट्रेस) (वैकल्पिक)

blame(t(), stacktrace()) :: {t(), stacktrace()}

अपवाद संरचना को बढ़ाने के लिए Exception.blame/3 से कॉल किया गया।

अपवाद के बारे में अतिरिक्त जानकारी एकत्र करने या कुछ अतिरिक्त महंगी गणना करने के लिए इस्तेमाल किया जा सकता है।

अपवाद (शब्द)

exception(term()) :: t()

संदेश (टी)

message(t()) :: String.t()