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

कैसे करें:

Lua में दो मुख्य फंक्शंस का उपयोग त्रुटि संभालने के लिए किया जाता है: pcall और xpcall। यहां बताया गया है कि आप उनका उपयोग कैसे कर सकते हैं:

function might_fail()
    if math.random() > 0.5 then
        error("ओहो! कुछ गलत हो गया।")
    else
        print("सब ठीक है!")
    end
end

-- pcall का उपयोग करते हुए
local success, errorMessage = pcall(might_fail)

if success then
    print("सफलता!")
else
    print("त्रुटि को पकड़ा गया:", errorMessage)
end

-- xpcall का उपयोग एक त्रुटि हैंडलर के साथ करते हुए
function myErrorHandler(err)
    print("त्रुटि हैंडलर कहता है:", err)
end

local status = xpcall(might_fail, myErrorHandler)
print("क्या कॉल सफल रही?", status)

नमूना आउटपुट हो सकता है:

त्रुटि को पकड़ा गया: ओहो! कुछ गलत हो गया।
त्रुटि हैंडलर कहता है: ओहो! कुछ गलत हो गया।
क्या कॉल सफल रही? नहीं

या, अगर कोई त्रुटि नहीं होती है:

सब ठीक है!
सफलता!
सब ठीक है!
क्या कॉल सफल रही? हां

गहराई से विचार

त्रुटियों को संभालना, या “अपवाद संभालना,” हमेशा से नहीं था। प्रारंभिक प्रोग्राम अक्सर क्रैश हो जाते थे। कोडिंग के विकास के साथ, स्थिरता की जरूरत भी बढ़ी। Lua का तरीका कुछ भाषाओं की तुलना में सरल है। कोई try/catch ब्लॉक नहीं हैं, बस pcall और xpcall हैं। पहला एक फंक्शन कॉल की रक्षा करता है, वापस स्थिति और किसी भी त्रुटि को लौटा देता है। दूसरा एक त्रुटि हैंडलिंग फंक्शन जोड़ता है, जो व्यक्तिगत सफाई या लॉगिंग के लिए उपयोगी है।

Lua में एक वैकल्पिक तरीका assert का उपयोग करना है, जो एक समान उद्देश्य की सेवा कर सकता है, यदि इसकी शर्त गलत है तो एक त्रुटि फेंककर। लेकिन जटिल त्रुटि संभालने के परिदृश्यों के लिए यह pcall जितना लचीला नहीं है।

आंतरिक रूप से, pcall और xpcall “सुरक्षित वातावरण” स्थापित करके काम करते हैं ताकि फंक्शन चल सके। यदि एक त्रुटि पॉप अप होती है, तो वातावरण इसे पकड़ लेता है और इसे तुरंत संभाल सकता है या प्रोग्राम को वापस संभालने के लिए पास कर सकता है।

यह भी देखें

  • ‘Programming in Lua’ पुस्तक (तीसरा संस्करण), जो https://www.lua.org/pil/ पर उपलब्ध है त्रुटि संभालने पर गहन अध्ययन के लिए (अनुभाग 8.4)।
  • आधिकारिक Lua 5.4 संदर्भ मैन्युअल: https://www.lua.org/manual/5.4/ - Lua के त्रुटि संभालने के कार्यों पर सबसे अद्यतन जानकारी के लिए।
  • Lua-उपयोगकर्ता विकी पर त्रुटि संभालना: http://lua-users.org/wiki/ErrorHandling – समुदाय की अंतर्दृष्टि और पैटर्न के लिए।