Try-Catch-Finally Block এর ব্যবহার in VB.Net
Try-Catch-Finally ব্লক ব্যবহার করে আপনি প্রোগ্রামে সৃষ্ট ত্রুটিগুলি (errors) ধরতে এবং সেগুলিকে সঠিকভাবে পরিচালনা করতে পারেন। এটি exception handling এর একটি গুরুত্বপূর্ণ অংশ, যা প্রোগ্রামের রানটাইমে ঘটে যাওয়া ত্রুটির কারণে প্রোগ্রাম বন্ধ হয়ে যাওয়ার পরিবর্তে সঠিকভাবে কাজ করতে সহায়তা করে।
Try-Catch-Finally ব্লকের সিস্টেম:
Try: এখানে আপনি কোড লিখেন, যেখানে ত্রুটি হতে পারে। যদি এই ব্লকের ভিতরে কোনো ত্রুটি ঘটে, তাহলে প্রোগ্রামটি Catch ব্লকে চলে যাবে।Catch: এই ব্লকটি ত্রুটির ধরন অনুযায়ী কাজ করে। এখানে আপনি ত্রুটির ধরন ক্যাচ করেন এবং প্রয়োজনীয় পদক্ষেপ গ্রহণ করেন, যেমন ত্রুটির বার্তা প্রিন্ট করা বা লগে সেভ করা।Finally: এই ব্লকটি ঐচ্ছিক এবং এটি এমন কোড ধারণ করে যা সর্বদা রান করবে, এমনকি ত্রুটি ঘটলেও। যেমন, রিসোর্সগুলি বন্ধ করা বা ফাইল/ডেটাবেস সংযোগ বন্ধ করা।
Try-Catch-Finally Block এর সিনট্যাক্স:
Try
' এই জায়গায় কোড লিখবেন যা ত্রুটি ঘটাতে পারে
Catch ex As Exception
' ত্রুটি ধরার পরে কি করবেন, তা এখানে লিখবেন
Finally
' এই অংশটি সর্বদা রান হবে, ত্রুটি ঘটুক বা না ঘটুক
End Tryex As Exception: এটি একটি exception অবজেক্ট, যা ত্রুটির বিস্তারিত তথ্য ধারণ করে, যেমন ত্রুটির বার্তা, স্ট্যাক ট্রেস ইত্যাদি।- Finally: ঐচ্ছিক, কিন্তু আপনি যদি কোডে কিছু পরিস্কারক কাজ করতে চান (যেমন ফাইল বা ডেটাবেস সংযোগ বন্ধ করা), তবে আপনি এটি ব্যবহার করতে পারেন।
ব্যবহার উদাহরণ ১: Basic Try-Catch-Finally
Sub Main()
Try
' এখানে আমরা একটি সংখ্যা দ্বারা অন্য একটি সংখ্যা ভাগ করার চেষ্টা করছি
Dim result As Integer = 10 / 0
Console.WriteLine("Result is: " & result)
Catch ex As DivideByZeroException
' DivideByZeroException যদি ঘটে, তাহলে এটি এখানে ধরা হবে
Console.WriteLine("Error: Cannot divide by zero.")
Finally
' এই কোডটি সর্বদা রান হবে
Console.WriteLine("Execution finished.")
End Try
End Subআউটপুট:
Error: Cannot divide by zero.
Execution finished.ব্যাখ্যা:
- Try ব্লক: এখানে আমরা ১০ কে ০ দ্বারা ভাগ করার চেষ্টা করেছি, যা একটি ত্রুটি তৈরি করে।
- Catch ব্লক:
DivideByZeroExceptionক্যাচ করেছে, এবং এর মাধ্যমে আমরা ত্রুটির ব্যাখ্যা প্রদর্শন করেছি। - Finally ব্লক: এটি সর্বদা রান করেছে, ত্রুটি ঘটুক বা না ঘটুক।
ব্যবহার উদাহরণ ২: Multiple Catch Blocks
একাধিক ত্রুটি ধরার জন্য আপনি একাধিক Catch ব্লক ব্যবহার করতে পারেন। এটি ত্রুটির ধরণ অনুযায়ী আলাদা আলাদা পদক্ষেপ গ্রহণ করতে সহায়তা করে।
Sub Main()
Try
' কোড যেখানে বিভিন্ন ত্রুটি ঘটতে পারে
Dim num As Integer = Convert.ToInt32("abc")
Catch ex As FormatException
' যদি ইনপুট একটি ভ্যালিড নাম্বার না হয়
Console.WriteLine("Error: Invalid format.")
Catch ex As InvalidCastException
' যদি টাইপ কাস্টিং ত্রুটি ঘটে
Console.WriteLine("Error: Invalid cast.")
Finally
' কোডটি সর্বদা রান করবে
Console.WriteLine("Execution finished.")
End Try
End Subআউটপুট:
Error: Invalid format.
Execution finished.ব্যাখ্যা:
- Try ব্লক: এখানে
"abc"কেInteger-এ কনভার্ট করার চেষ্টা করা হয়েছে, যা একটি ত্রুটি সৃষ্টি করবে। - Catch ব্লক: প্রথমে
FormatExceptionত্রুটি ধরা হয়েছে এবং তার পরামর্শ প্রদর্শন করা হয়েছে। - Finally ব্লক: সর্বদা রান হয়েছে।
ব্যবহার উদাহরণ ৩: Exception Object এর ব্যবহার
Exception অবজেক্ট ব্যবহার করে আপনি ত্রুটির বিস্তারিত তথ্য পেতে পারেন, যেমন ত্রুটির বার্তা, স্ট্যাক ট্রেস ইত্যাদি।
Sub Main()
Try
' কোড যেখানে ত্রুটি ঘটতে পারে
Dim result As Integer = 10 / 0
Catch ex As Exception
' Exception অবজেক্টের মাধ্যমে ত্রুটির বিস্তারিত তথ্য পাওয়া যায়
Console.WriteLine("Error: " & ex.Message)
Console.WriteLine("StackTrace: " & ex.StackTrace)
Finally
Console.WriteLine("Execution finished.")
End Try
End Subআউটপুট:
Error: Division by zero.
StackTrace: at ConsoleApp1.Program.Main() in C:\Users\YourName\source\repos\ConsoleApp1\ConsoleApp1\Program.vb:line 10
Execution finished.ব্যাখ্যা:
ex.Message: ত্রুটির বার্তা (যেমন: "Division by zero").ex.StackTrace: ত্রুটির অবস্থান (যেমন, কোন ফাইলের কোন লাইনে ত্রুটি ঘটেছে)।
ব্যবহার উদাহরণ ৪: Custom Exception Handling
আপনি নিজেও কাস্টম exception তৈরি করতে পারেন এবং সেটা Try-Catch ব্লকে ধরতে পারেন।
Sub Main()
Try
' কাস্টম exception তৈরি করা
Throw New ApplicationException("This is a custom exception.")
Catch ex As ApplicationException
' কাস্টম exception ধরার পরে প্রিন্ট করা
Console.WriteLine("Custom Error: " & ex.Message)
Finally
Console.WriteLine("Execution finished.")
End Try
End Subআউটপুট:
Custom Error: This is a custom exception.
Execution finished.সারাংশ
- Try-Catch: ত্রুটি ধরা এবং সেই ত্রুটির সাথে কাজ করার জন্য ব্যবহৃত হয়।
- Finally: এটি ঐচ্ছিক, এবং এটি সর্বদা রান হয়, ত্রুটি ঘটুক বা না ঘটুক। এটি সাধারণত রিসোর্স পরিষ্কার করার জন্য ব্যবহৃত হয় (যেমন ফাইল বা ডেটাবেস সংযোগ বন্ধ করা)।
- একাধিক Catch ব্লক ব্যবহার করা যায় যাতে ভিন্ন ভিন্ন ত্রুটি ধরতে এবং তাদের সাথে আলাদাভাবে কাজ করতে সক্ষম হোন।
এভাবে আপনি প্রোগ্রামে বিভিন্ন ত্রুটির মোকাবিলা করতে পারেন এবং প্রোগ্রামটি ক্র্যাশ না হয়ে সঠিকভাবে কাজ করতে পারে।
Read more