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)

নমুনা আউটপুট হতে পারে:

একটি ত্রুটি ধরা পড়েছে: ওহ! কিছু একটা ভুল হয়ে গেছে।
ত্রুটি হ্যান্ডলার বলেছে: ওহ! কিছু একটা ভুল হয়ে গেছে।
কলটি সফল ছিল কি? false

অথবা, যদি কোন ত্রুটি না ঘটে:

সব ঠিক আছে!
সাফল্য!
সব ঠিক আছে!
কলটি সফল ছিল কি? true

গভীর ডুব

ত্রুটি সামাল দেওয়া, অথবা “ব্যতিক্রম সামাল দেওয়া,” সবসময় একটি বিষয় ছিল না। প্রাথমিক প্রোগ্রামগুলি প্রায়ই স্থবির হয়ে যেত – অনেক। কোডিং যেমন উন্নত হলো, স্থিতিশীলতার প্রয়োজনও বাড়তে থাকলো। Lua এর পদ্ধতি কিছু ভাষার তুলনায় সহজ। কোন try/catch ব্লক নেই, শুধু pcall এবং xpcall আছে। প্রথমটি একটি ফাংশন কলের সুরক্ষা দিয়ে, স্ট্যাটাস এবং যেকোনো ত্রুটি ফেরত দেয়। দ্বিতীয়টি ত্রুটি হ্যান্ডলিং ফাংশন যোগ করে, যা কাস্টম পরিস্কার করা অথবা লগিংয়ের জন্য উপযোগী।

Lua তে একটি বিকল্প হল assert ব্যবহার করা, যা এর শর্ত মিথ্যা হলে ত্রুটি নিক্ষেপণ করে একই উদ্দেশ্যে কাজ করতে পারে। তবে জটিল ত্রুটি সামাল দেওয়ার পরিস্থিতিতে pcall এর মত নমনীয় নয়।

অভ্যন্তরীণভাবে, pcall এবং xpcall একটি “সুরক্ষিত পরিবেশ” স্থাপন করে ফাংশনটি চালানোর জন্য কাজ করে। যদি কোনো ত্রুটি দেখা দেয়, পরিবেশটি এটি ধরে এবং অবিলম্বে এটি সামাল দিতে পারে বা প্রোগ্রামের জন্য ফেরত পাঠাতে পারে।

আরও দেখুন

  • প্রোগ্রামিং ইন 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 – সম্প্রদায়ের অন্তর্দৃষ্টি এবং প্যাটার্নের জন্য।