Custom Errors তৈরি এবং Error Handling একটি প্রোগ্রামিং ভাষায় খুবই গুরুত্বপূর্ণ বিষয়, যা আপনাকে আপনার কোডে সঠিকভাবে ত্রুটি (error) পরিচালনা করতে সাহায্য করে। জুলিয়া ভাষায় আপনি নিজের কাস্টম ত্রুটি তৈরি করতে পারেন এবং সেগুলি try-catch ব্লক দিয়ে হ্যান্ডেল করতে পারেন।
এখানে, আমরা Custom Errors তৈরি এবং Error Handling এর বিভিন্ন ধারণা এবং উদাহরণ দেখব।
Custom Errors (কাস্টম ত্রুটি) তৈরি করা
জুলিয়া ভাষায় কাস্টম ত্রুটি তৈরি করতে আপনি Throwable টাইপ থেকে এর শ্রেণী তৈরি করতে পারেন। এটি একটি কাস্টম ত্রুটি তৈরি করার জন্য খুবই উপকারী, যাতে আপনি আপনার কোডের ত্রুটির ধরন এবং বার্তা কাস্টমাইজ করতে পারেন।
Custom Error তৈরি করা
জুলিয়ায় একটি কাস্টম ত্রুটি তৈরি করতে Exception শ্রেণী থেকে একটি নতুন শ্রেণী তৈরি করা হয়।
# Custom Error Class তৈরি
struct MyError <: Exception
message::String
end
# কাস্টম ত্রুটি তৈরি করে একটি ফাংশনে ব্যবহার করা
function test_function(x)
if x < 0
throw(MyError("Negative value not allowed")) # কাস্টম ত্রুটি নিক্ষেপ করা
else
println("Valid value: ", x)
end
endএখানে, MyError নামের একটি কাস্টম ত্রুটি তৈরি করা হয়েছে যা Exception শ্রেণী থেকে উদ্ভূত। ত্রুটির message নামের একটি ফিল্ড আছে যা একটি স্ট্রিং মেসেজ ধারণ করে।
এখন, যদি x < 0 হয়, তাহলে এই কাস্টম ত্রুটিটি throw() ফাংশনের মাধ্যমে নিক্ষেপ করা হবে।
Custom Error ব্যবহার করা
try
test_function(-5) # একটি নেতিবাচক মান দেওয়া হয়েছে, যা কাস্টম ত্রুটি নিক্ষেপ করবে
catch e
if isa(e, MyError) # কাস্টম ত্রুটি চেক করা হচ্ছে
println("Caught custom error: ", e.message) # ত্রুটির মেসেজ প্রদর্শন
else
println("An unknown error occurred")
end
endআউটপুট:
Caught custom error: Negative value not allowedএখানে, try-catch ব্লকটি test_function(-5) কল করার সময় কাস্টম ত্রুটিটি হ্যান্ডেল করবে এবং e.message প্রদর্শন করবে, যেখানে e হল ত্রুটির অবজেক্ট।
Error Handling (ত্রুটি হ্যান্ডলিং)
জুলিয়া ভাষায় ত্রুটি হ্যান্ডলিং প্রধানত try-catch ব্লক ব্যবহার করে করা হয়। try ব্লকে আপনি কোড লেখেন যা ত্রুটি সৃষ্টি করতে পারে এবং catch ব্লকে সেই ত্রুটি হ্যান্ডল করা হয়।
Basic Error Handling Example (মূল ত্রুটি হ্যান্ডলিং)
try
x = 10 / 0 # এখানে ডিভিশন বাই জিরো ত্রুটি হতে পারে
catch e
println("An error occurred: ", e)
endআউটপুট:
An error occurred: DivideError(0, 0)এখানে, catch e ব্লকে ত্রুটিটি ধরা হয়েছে এবং e ত্রুটির বিস্তারিত তথ্য ধারণ করছে, যেমন **DivideError(0, 0)**।
Throwing Built-in Errors
যখন কোনো Built-in (প্রাক-নির্ধারিত) ত্রুটি ঘটবে, আপনি সেই ত্রুটির ধরণ এবং বার্তা কাস্টমাইজ না করে শুধুমাত্র throw() ফাংশন ব্যবহার করে ত্রুটি নিক্ষেপ করতে পারেন:
function check_age(age)
if age < 0
throw(ArgumentError("Age cannot be negative"))
elseif age < 18
println("Minor")
else
println("Adult")
end
end
try
check_age(-5) # নেতিবাচক বয়স দেওয়া হবে
catch e
println("Error: ", e)
endআউটপুট:
Error: ArgumentError("Age cannot be negative")এখানে, ArgumentError ব্যবহার করে একটি বিল্ট-ইন ত্রুটি নিক্ষেপ করা হয়েছে।
Multiple Catch Blocks (একাধিক Catch ব্লক)
জুলিয়া ত্রুটি হ্যান্ডলিংয়ের মধ্যে একাধিক catch ব্লক ব্যবহার করতে সক্ষম। আপনি বিভিন্ন ধরনের ত্রুটি অনুযায়ী নির্দিষ্ট catch ব্লক ব্যবহার করতে পারেন।
try
a = 10 / 0 # ডিভিশন বাই জিরো ত্রুটি
b = "hello" + 10 # টাইপ ত্রুটি
catch e
if isa(e, DivideError)
println("Caught division by zero error")
elseif isa(e, MethodError)
println("Caught method error")
else
println("An unknown error occurred")
end
endআউটপুট:
Caught division by zero errorএখানে, isa(e, DivideError) ব্যবহার করে আমরা চেক করেছি যে ত্রুটিটি DivideError কিনা এবং সেই অনুযায়ী ভিন্ন ভিন্ন ত্রুটি বার্তা প্রদর্শন করেছি।
সারসংক্ষেপ
- Custom Errors: জুলিয়া ভাষায় custom errors তৈরি করতে
throwএবংExceptionশ্রেণী ব্যবহার করা হয়। আপনি আপনার নিজের ত্রুটি শ্রেণী তৈরি করে তা সুনির্দিষ্ট বার্তা এবং আচরণের সাথে নিক্ষেপ করতে পারেন। - Error Handling:
try-catchব্লক ব্যবহার করে ত্রুটি হ্যান্ডল করা হয়। এতে আপনি কোডের ত্রুটি সনাক্ত করতে এবং নির্দিষ্ট ত্রুটির জন্য পৃথকভাবে বার্তা প্রদর্শন করতে পারেন। - Throwing Built-in Errors: জুলিয়া ভাষায় বিল্ট-ইন ত্রুটি যেমন
ArgumentError,DivideError,MethodErrorইত্যাদিthrowফাংশন ব্যবহার করে নিক্ষেপ করা যায়। - Multiple Catch Blocks: বিভিন্ন ধরনের ত্রুটি জন্য একাধিক
catchব্লক ব্যবহার করা যেতে পারে।
এগুলি জুলিয়া প্রোগ্রামিং ভাষায় Error Handling এবং Custom Error ব্যবহারের মৌলিক ধারণা এবং এর মাধ্যমে আপনার কোডে ত্রুটি মোকাবেলার সঠিক পদ্ধতি প্রদান করে।
Read more