Custom Error Messages তৈরি করা

Error Handling এবং Exceptions (এরর হ্যান্ডলিং এবং এক্সসেপশনস) - লুয়া (Lua) - Computer Programming

316

লুয়া (Lua) ভাষায় এরর হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ এবং এতে error ফাংশন ব্যবহৃত হয় যা কাস্টম এরর মেসেজ তৈরি এবং প্রদর্শন করতে সহায়তা করে। error ফাংশনটি দিয়ে আপনি নিজস্ব এরর মেসেজ তৈরি করে প্রোগ্রামের প্রবাহ বন্ধ করতে পারেন।

এখানে, কাস্টম এরর মেসেজ তৈরি করার প্রক্রিয়া এবং এর ব্যবহার উদাহরণসহ আলোচনা করা হবে।


১. error ফাংশন ব্যবহার

লুয়া ভাষায় error ফাংশন ব্যবহার করে কাস্টম এরর মেসেজ তৈরি করা হয়। এটি সাধারণত একটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে এবং ত্রুটি বা এরর সৃষ্টির জন্য ব্যবহৃত হয়।

সিনট্যাক্স:

error(message, [level])
  • message: এটি একটি স্ট্রিং যা আপনি কাস্টম এরর মেসেজ হিসেবে প্রদর্শন করতে চান।
  • level: এটি একটি অপশনাল প্যারামিটার যা স্ট্যাক ট্রেসের কোথায় ত্রুটি দেখাবে তা নির্ধারণ করে। সাধারণভাবে, এটি 1 থাকে।

উদাহরণ:

function divide(a, b)
    if b == 0 then
        error("Cannot divide by zero!")  -- কাস্টম এরর মেসেজ
    end
    return a / b
end

print(divide(10, 0))  -- আউটপুট: error: Cannot divide by zero!

এখানে, divide ফাংশনটি চেক করছে যে, যদি b এর মান 0 হয়, তবে error ফাংশন ব্যবহার করে কাস্টম মেসেজ "Cannot divide by zero!" তৈরি করা হয়েছে।


২. pcall এবং xpcall ব্যবহার

লুয়া ভাষায় pcall (protected call) এবং xpcall (extended protected call) ব্যবহার করে আপনি ত্রুটি মোকাবিলা করতে পারেন। এগুলির মাধ্যমে আপনি কাস্টম এরর মেসেজগুলিকে সুরক্ষিতভাবে পরিচালনা করতে পারেন এবং এরর হলে সেগুলো কাস্টম হ্যান্ডলার দিয়ে প্রক্রিয়া করতে পারেন।

pcall উদাহরণ:

pcall ফাংশন একটি নিরাপদ কল (protected call) করে এবং যদি কোনো ত্রুটি ঘটে তবে এটি সেই ত্রুটিকে হ্যান্ডেল করতে সাহায্য করে। এটি একটি বুলিয়ান মান রিটার্ন করে যা জানায় যে কলটি সফল হয়েছে কি না, এবং যদি ত্রুটি ঘটে, তবে সেই ত্রুটির মেসেজ রিটার্ন করা হয়।

function divide(a, b)
    if b == 0 then
        error("Cannot divide by zero!")
    end
    return a / b
end

local success, result = pcall(divide, 10, 0)

if not success then
    print("Error:", result)  -- আউটপুট: Error: Cannot divide by zero!
else
    print("Result:", result)
end

এখানে, pcall ফাংশনটি ব্যবহার করা হয়েছে যা divide ফাংশনটি কল করছে এবং যদি ত্রুটি ঘটে তবে তা কাস্টম এরর মেসেজ সহ হ্যান্ডেল করা হচ্ছে।


xpcall উদাহরণ:

xpcall ফাংশনটি pcall এর মতোই কাজ করে, তবে এটি একটি অতিরিক্ত আর্গুমেন্ট গ্রহণ করে, যা ত্রুটি হ্যান্ডলিং ফাংশন হিসেবে ব্যবহৃত হয়। এটি ত্রুটি হলে কাস্টম ত্রুটি হ্যান্ডলারের মাধ্যমে এরর মেসেজ প্রক্রিয়া করতে সহায়তা করে।

function customErrorHandler(err)
    return "Custom Error: " .. err
end

function divide(a, b)
    if b == 0 then
        error("Cannot divide by zero!")
    end
    return a / b
end

local success, result = xpcall(divide, customErrorHandler, 10, 0)

if not success then
    print(result)  -- আউটপুট: Custom Error: Cannot divide by zero!
else
    print("Result:", result)
end

এখানে, xpcall ব্যবহার করা হয়েছে এবং একটি কাস্টম ত্রুটি হ্যান্ডলার customErrorHandler দেওয়া হয়েছে, যা ত্রুটির মেসেজকে কাস্টম টেক্সটের মাধ্যমে রিটার্ন করে।


৩. অপশনাল আর্গুমেন্টস সহ কাস্টম এরর মেসেজ

আপনি error ফাংশনকে অপশনাল আর্গুমেন্ট দিয়ে আরও বিস্তারিত এবং কাস্টমাইজড এরর মেসেজ দিতে পারেন। উদাহরণস্বরূপ, আপনি ফাংশনের আর্গুমেন্টের উপর ভিত্তি করে কাস্টম মেসেজ তৈরি করতে পারেন।

function validateNumber(num)
    if num < 0 then
        error("Error: Negative number not allowed! Value: " .. num)
    elseif num == 0 then
        error("Error: Zero is not a valid input!")
    end
    return "Valid number: " .. num
end

print(validateNumber(-5))  -- আউটপুট: Error: Negative number not allowed! Value: -5

এখানে, validateNumber ফাংশনটি পজিটিভ সংখ্যা ছাড়া অন্য কোনো মানকে গ্রহণ করবে না এবং তার উপর ভিত্তি করে কাস্টম এরর মেসেজ তৈরি করবে।


সারসংক্ষেপ

লুয়া ভাষায় কাস্টম এরর মেসেজ তৈরি এবং হ্যান্ডল করার জন্য:

  • error ফাংশন ব্যবহার করে কাস্টম এরর মেসেজ তৈরি করা হয়।
  • pcall এবং xpcall ব্যবহার করে নিরাপদভাবে ফাংশন কল করা যায় এবং ত্রুটি হ্যান্ডলিং করা যায়।
  • কাস্টম ত্রুটি হ্যান্ডলার ব্যবহার করে ডিফল্ট এরর মেসেজের পরিবর্তে আরও কাস্টমাইজড মেসেজ প্রদান করা যায়।

এই টুলগুলো লুয়া প্রোগ্রামিংয়ে ত্রুটি হ্যান্ডলিংকে আরও কার্যকর এবং ব্যবহারকারী বান্ধব করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...