pcall এবং xpcall এর মাধ্যমে Error Handling

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

291

লুয়া (Lua) ভাষায় এরর হ্যান্ডলিং করার জন্য pcall এবং xpcall ফাংশন ব্যবহার করা হয়। এই দুটি ফাংশন আপনাকে কোডে ঘটে যাওয়া ত্রুটিগুলি সঠিকভাবে ধরতে এবং সেগুলি হ্যান্ডল করতে সহায়তা করে, যা কোডের ক্র্যাশিং প্রতিরোধ করে এবং ত্রুটির বার্তা সহজে প্রদর্শন করে।

এই টিউটোরিয়ালে আমরা pcall এবং xpcall এর ব্যবহারের মাধ্যমে লুয়া ত্রুটি হ্যান্ডলিং (Error Handling) দেখব।


১. pcall (Protected Call)

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

সিনট্যাক্স:

status, result = pcall(function)

এখানে, status একটি বুলিয়ান মান রিটার্ন করে, যা জানায় যে ফাংশনটি সফলভাবে চালিত হয়েছে কি না। result হল ফাংশনের আউটপুট (যদি কোনো ত্রুটি না ঘটে), অথবা ত্রুটির বার্তা (যদি ত্রুটি ঘটে)।

উদাহরণ:

function divide(a, b)
    return a / b
end

-- pcall ব্যবহার করে ত্রুটি হ্যান্ডলিং
status, result = pcall(divide, 10, 0)

if status then
    print("Result: " .. result)
else
    print("Error: " .. result)  -- আউটপুট: Error: attempt to divide by zero
end

এখানে, divide ফাংশনটি ১০ কে ০ দিয়ে ভাগ করার চেষ্টা করছে, যা একটি ত্রুটি (divide by zero) তৈরি করবে। pcall ফাংশনটি এটি সুরক্ষিতভাবে চালাবে এবং ত্রুটির বার্তা রিটার্ন করবে।


২. xpcall (Extended Protected Call)

xpcall হল pcall এর একটি উন্নত সংস্করণ, যেখানে আপনি একটি কাস্টম ত্রুটি হ্যান্ডলার ফাংশনও প্রদান করতে পারেন। এটি ফাংশনের ত্রুটির বার্তাকে আরও সুন্দরভাবে হ্যান্ডল করতে এবং লজিক্যাল ফলোআপ কাজ সম্পাদন করতে সহায়তা করে।

সিনট্যাক্স:

status, result = xpcall(function, error_handler)

এখানে, error_handler হলো একটি কাস্টম ফাংশন যা ত্রুটির বার্তা প্রক্রিয়া করবে।

উদাহরণ:

function divide(a, b)
    return a / b
end

-- কাস্টম ত্রুটি হ্যান্ডলার
function errorHandler(err)
    return "Custom error: " .. err
end

-- xpcall ব্যবহার করে ত্রুটি হ্যান্ডলিং
status, result = xpcall(divide, errorHandler, 10, 0)

if status then
    print("Result: " .. result)
else
    print(result)  -- আউটপুট: Custom error: attempt to divide by zero
end

এখানে, xpcall ফাংশনটি divide ফাংশনকে সুরক্ষিতভাবে চালাবে, এবং যদি কোনো ত্রুটি ঘটে, তাহলে errorHandler ফাংশনটি সেই ত্রুটির বার্তা সুন্দরভাবে প্রক্রিয়া করবে এবং কাস্টম বার্তা রিটার্ন করবে।


সারসংক্ষেপ

  • pcall (protected call): এটি একটি সুরক্ষিত কল ফাংশন, যা কোনো ফাংশনকে ত্রুটি থেকে সুরক্ষিতভাবে চালাতে সাহায্য করে এবং ত্রুটি ঘটলে false এবং ত্রুটির বার্তা রিটার্ন করে।
  • xpcall (extended protected call): এটি pcall এর মতো কাজ করে, তবে এতে আপনি একটি কাস্টম ত্রুটি হ্যান্ডলার ফাংশন প্রদান করতে পারেন, যা ত্রুটির বার্তা প্রক্রিয়া করে একটি কাস্টম আউটপুট প্রদান করে।

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

Content added By
Promotion

Are you sure to start over?

Loading...