Exception Handling এবং Try-Catch ব্যবহার

Microsoft Technologies - লিংক (LinQ) LINQ এ Exception Handling এবং Debugging Techniques |
200
200

Exception Handling একটি গুরুত্বপূর্ণ কৌশল যা প্রোগ্রামিংয়ে বিভিন্ন ধরনের ত্রুটি (error) বা ব্যতিক্রম (exception) সঠিকভাবে পরিচালনা করতে ব্যবহৃত হয়। যখন আপনার কোডের মধ্যে কোনো অপ্রত্যাশিত ত্রুটি ঘটে, তখন আপনি সেই ত্রুটিকে handle করে প্রোগ্রামের চলমানতা বজায় রাখতে পারেন। C# এ exception handling সাধারনত try, catch, finally ব্লক ব্যবহার করে করা হয়।


Exception Handling এর প্রয়োজনীয়তা

Exception Handling এর উদ্দেশ্য হলো:

  1. Program Crash Prevention: যখন কোনো ত্রুটি ঘটে, তখন সঠিকভাবে exception handle করে প্রোগ্রামকে ক্র্যাশ হতে রোধ করা।
  2. Error Reporting: ত্রুটির তথ্য সঠিকভাবে ইউজার বা ডেভেলপারকে জানানো।
  3. Graceful Recovery: ত্রুটি ঘটলেও প্রোগ্রাম বা সিস্টেমের কার্যকারিতা অব্যাহত রাখা।

Try-Catch ব্লক

C# এ exception handling এর প্রধান উপাদান হচ্ছে try, catch এবং finally ব্লক।

  • try: এর মধ্যে আপনি সেই কোড লেখেন যা ত্রুটি ঘটতে পারে।
  • catch: এখানে ত্রুটির ধরন অনুযায়ী exception হ্যান্ডলিং করা হয়।
  • finally: এটি optional, তবে আপনি যদি চান যে কিছু কোড ত্রুটি ঘটলেও কার্যকর হোক, তবে finally ব্যবহার করতে পারেন। এটি সব সময় execute হবে, ত্রুটি ঘটুক বা না ঘটুক।

Try-Catch এর ব্যবহার:

try
{
    // কোড যা ত্রুটি ঘটাতে পারে
    int result = 10 / 0; // Divide by zero exception
}
catch (DivideByZeroException ex)
{
    // ত্রুটি ধরা হলে এই কোডটি চলবে
    Console.WriteLine("Error: " + ex.Message);
}
finally
{
    // এই কোডটি সব সময় চলবে, ত্রুটি ঘটুক বা না ঘটুক
    Console.WriteLine("Operation Completed");
}

এখানে:

  • try ব্লকে কোড লেখা হয়েছে, যা ত্রুটি ঘটাতে পারে।
  • catch ব্লকটি DivideByZeroException এর ক্ষেত্রে ত্রুটিটি ধরবে এবং সেই ত্রুটির বার্তা প্রিন্ট করবে।
  • finally ব্লকটি সব সময় execute হবে, এখানে "Operation Completed" বার্তা প্রিন্ট করা হয়েছে।

আউটপুট:

Error: Attempted to divide by zero.
Operation Completed

Multiple Catch ব্লক ব্যবহার

একই try ব্লকের মধ্যে একাধিক catch ব্লক ব্যবহার করা যেতে পারে, যা বিভিন্ন ধরনের exception ধরতে সক্ষম।

try
{
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]); // IndexOutOfRangeException
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("Index error: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("General error: " + ex.Message);
}
finally
{
    Console.WriteLine("Finally block executed");
}

এখানে:

  • IndexOutOfRangeException ধরা হলে প্রথম catch ব্লকটি কার্যকর হবে।
  • যদি অন্য কোনো exception ঘটে, তাহলে সাধারণ catch ব্লকটি ত্রুটিটি ধরবে।

আউটপুট:

Index error: Index was outside the bounds of the array.
Finally block executed

Exception Object এবং Message

Exception object এর মধ্যে ত্রুটির বিস্তারিত তথ্য থাকে, যেমন:

  • Message: ত্রুটির বার্তা।
  • StackTrace: ত্রুটি কোথায় ঘটেছিল তার বিস্তারিত তথ্য।
  • InnerException: যদি কোনো exception অন্য একটি exception থেকে উদ্ভূত হয়, তবে এটি মূল exception এর তথ্য ধারণ করে।

উদাহরণ:

try
{
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]); // IndexOutOfRangeException
}
catch (Exception ex)
{
    Console.WriteLine("Error: " + ex.Message);
    Console.WriteLine("Stack Trace: " + ex.StackTrace);
}

আউটপুট:

Error: Index was outside the bounds of the array.
Stack Trace: at ExceptionHandlingExample.Program.Main() in C:\Path\To\Program.cs:line 10

Custom Exception তৈরি করা

আপনি নিজে custom exception তৈরি করতে পারেন, যদি প্রোগ্রামে বিশেষ কোনো ত্রুটি চিহ্নিত করতে চান। এর জন্য একটি ক্লাস তৈরি করে Exception ক্লাসকে ইনহেরিট করতে হয়।

Custom Exception উদাহরণ:

public class CustomException : Exception
{
    public CustomException(string message) : base(message)
    {
    }
}

try
{
    throw new CustomException("This is a custom exception");
}
catch (CustomException ex)
{
    Console.WriteLine("Caught: " + ex.Message);
}

এখানে:

  • CustomException ক্লাসটি Exception থেকে ইনহেরিট করা হয়েছে।
  • throw কিওয়ার্ড ব্যবহার করে একটি custom exception তৈরি করা হয়েছে।

আউটপুট:

Caught: This is a custom exception

Exception Handling Best Practices

  1. Specific exceptions: যতটা সম্ভব নির্দিষ্ট exception ধরুন। সাধারণ catch (Exception ex) থেকে বিরত থাকুন, কারণ এটি সব ধরনের exception ধরবে এবং সমস্যার উৎস চিহ্নিত করা কঠিন হবে।
  2. Exception logging: Exception ঘটলে সেগুলি লগ করুন, যাতে ভবিষ্যতে সমস্যা সমাধান করা সহজ হয়।
  3. Avoid empty catch blocks: কখনও খালি catch ব্লক ব্যবহার করবেন না, কারণ এটি সমস্যা লুকাতে পারে এবং ডিবাগিং কঠিন করে তোলে।
  4. Don’t use exception for control flow: এক্সেপশন ব্যবহারের উদ্দেশ্য হল ত্রুটি হ্যান্ডলিং, এটি সাধারণ নিয়ন্ত্রণ প্রবাহের অংশ হিসেবে ব্যবহার করবেন না।
  5. Handle exception at appropriate level: ত্রুটির ধরন এবং গুরুত্ব অনুসারে exception হ্যান্ডল করুন। সাধারণত, exception হ্যান্ডলিং লজিককে ব্যবহারকারীর ইন্টারফেস (UI) বা লগিং স্তরে রাখা উচিত।

Conclusion

Exception handling প্রোগ্রামিংয়ের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ। C# এ try-catch ব্লক ব্যবহার করে ত্রুটি গুলি সঠিকভাবে ধরতে এবং সেগুলোর কার্যকরী সমাধান দিতে সাহায্য করে। finally ব্লকটি আপনি যেকোনো ধরনের রিসোর্স ফ্রি বা ক্লিনআপ করতে ব্যবহার করতে পারেন। এছাড়া custom exceptions তৈরি করে আপনি আরও নির্দিষ্ট ও কাস্টমাইজড ত্রুটি বার্তা তৈরি করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion