Elixir:
एरर्स को हैंडल करना

कैसे करें:

एलिक्सिर में, हम अक्सर पैटर्न मैचिंग और case स्टेटमेंट का इस्तेमाल करके विभिन्न परिणामों को संभालते हैं, जिसमें एरर्स भी शामिल होते हैं।

defmodule Example do
  def divide(a, b) do
    case b do
      0 -> {:error, "शून्य से विभाजन नहीं कर सकते।"}
      _ -> {:ok, a / b}
    end
  end
end

# सफल विभाजन
{:ok, result} = Example.divide(10, 2)
IO.puts("10 / 2 है #{result}")

# शून्य से विभाजन का प्रयत्न
{:error, reason} = Example.divide(10, 0)
IO.puts("एरर: #{reason}")

नमूना आउटपुट:

10 / 2 है 5.0
एरर: शून्य से विभाजन नहीं कर सकते।

जब आप यह एलिक्सिर कोड चलाते हैं, आपको या तो एक सफल विभाजन मिलेगा या एक एरर संदेश, जो आपके इनपुट पर निर्भर करता है। यहां कोई क्रैश नहीं है!

गहराई से जानकारी

पहले, एरर हैंडलिंग अक्सर रिटर्न वैल्यूज़ की जांच के बारे में होता था। हालांकि, एलिक्सिर की फंक्शनल जड़ों की वजह से, हमारे पास पैटर्न मैचिंग और टैग किये गए ट्यूपल्स हैं, जैसे {:ok, value} या {:error, reason} जो ज्यादा सुंदर हैं।

एलिक्सिर में एरर्स को हैंडल करने के अन्य तरीके हैं:

  • एलिक्सिर की try और rescue जो पारंपरिक try-catch की तरह होते हैं जो कि आज्ञाकारी भाषाओं में होते हैं, लेकिन एलिक्सिर की स्पष्टता की प्राथमिकता के कारण कम बार इस्तेमाल किए जाते हैं।
  • सुपरवाइजर्स और जेनसर्वर्स, एलिक्सिर के OTP फ्रेमवर्क के हिस्सा, जो ज्यादातर फॉल्ट टॉलरन्स के बारे में हैं। वे आपके कोड की प्रक्रिया की निगरानी करते हैं, तैयार रहते हैं उसे फिर से शुरू करने के लिए अगर कुछ गलत हो जाए।

इम्प्लीमेंटेशन के हिसाब से, एलिक्सिर एरलांग की मजबूती पर बनाया गया है। यह एरर्स को सिर्फ एक और प्रकार का संदेश मानता है जिसे सारे पैटर्न मैचिंग और फंक्शनल सुविधा के साथ हैंडल किया जाना चाहिए।

और देखें

एलिक्सिर में एरर हैंडलिंग पर आगे पढ़ने के लिए, देखें: