সি# এ এক্সেপশন হ্যান্ডলিং কোডের ত্রুটি ও অপ্রত্যাশিত সমস্যাগুলো দক্ষভাবে হ্যান্ডল করার প্রক্রিয়া। এক্সেপশন হ্যান্ডলিং ব্যবহার করে কোড রানটাইমে সুরক্ষিত রাখা এবং ব্যবহারকারীকে পরিষ্কার ত্রুটির বার্তা দেওয়া সম্ভব। নিচে সি# এক্সেপশন হ্যান্ডলিং এর মূল অংশগুলো নিয়ে আলোচনা করা হলো।
try
এবং catch
ব্লকtry
ব্লকে এমন কোড থাকে যেখানে এক্সেপশন ঘটতে পারে। try
ব্লকের কোনো কোডে এক্সেপশন ঘটলে, সেটি catch
ব্লকে চলে আসে, এবং সেখানে এক্সেপশনটি হ্যান্ডল করা হয়।
try
{
int result = 10 / 0; // এটি Division by zero exception ঘটাবে
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Division by zero is not allowed: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
উপরের উদাহরণে, প্রথম catch
ব্লকটি DivideByZeroException
এক্সেপশন ধরার জন্য ব্যবহৃত হয়েছে, এবং দ্বিতীয় catch
ব্লকটি জেনেরিক এক্সেপশন ধরার জন্য।
finally
ব্লকfinally
ব্লক ব্যবহার করা হয় এমন কিছু কোড রাখার জন্য, যা try
এবং catch
ব্লক শেষে অবশ্যই চালানো হবে। এটি প্রায়শই রিসোর্স মুক্ত করতে ব্যবহৃত হয়, যেমন ডেটাবেস কানেকশন বা ফাইল বন্ধ করা।
try
{
int[] numbers = {1, 2, 3};
Console.WriteLine(numbers[5]); // Array index out of bounds exception
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index is out of bounds: " + ex.Message);
}
finally
{
Console.WriteLine("This block is always executed.");
}
উপরের কোডে, try
ব্লকে IndexOutOfRangeException
ধরা হবে এবং finally
ব্লক সর্বদা চালানো হবে।
throw
কিওয়ার্ডকাস্টম এক্সেপশন তৈরি বা নির্দিষ্ট এক্সেপশন ছাড়ার জন্য throw
কিওয়ার্ড ব্যবহার করা হয়। নিচের উদাহরণে একটি কাস্টম এক্সেপশন ফাংশন ব্যবহার করে ছাড়া হয়েছে।
public void ValidateAge(int age)
{
if (age < 18)
{
throw new ArgumentException("Age must be 18 or older.");
}
}
এখানে, ValidateAge
মেথডে যদি age
১৮ এর কম হয়, তাহলে ArgumentException
ছোড়া হবে।
public class Program
{
public static void Main()
{
try
{
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[5]); // Index out of bounds exception
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index is out of bounds: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("Execution completed.");
}
}
}
উপরের উদাহরণে, try
ব্লকের মধ্যে একটি ইনডেক্স আউট অফ বাউন্ড এক্সেপশন ঘটলে সেটি catch
ব্লকে হ্যান্ডল করা হবে এবং finally
ব্লক সর্বদা চালানো হবে।
সি# এ এক্সেপশন হ্যান্ডলিং:
এইভাবে, এক্সেপশন হ্যান্ডলিং কোডকে আরও নিরাপদ এবং নির্ভরযোগ্য করে তোলে।
এক্সেপশন (Exception) হলো একটি বিশেষ ইভেন্ট যা প্রোগ্রাম রানটাইমে ঘটে এবং প্রোগ্রামের স্বাভাবিক কার্যক্রমে বিঘ্ন ঘটায়। এক্সেপশন বিভিন্ন কারণে ঘটতে পারে, যেমন:
এগুলো ছাড়াও প্রোগ্রামিংয়ে অনেক রকম ত্রুটি হতে পারে যা স্বাভাবিক প্রোগ্রাম ফ্লোতে বাধা দেয় এবং প্রোগ্রামকে নির্দিষ্ট ভাবে চালানো কঠিন করে তোলে। এসব ক্ষেত্রে এক্সেপশন হ্যান্ডলিং ব্যবহৃত হয়।
এক্সেপশন ঘটে গেলে প্রোগ্রামটি নিজে থেকে চলতে অক্ষম হয় এবং ত্রুটি নির্ণয়কারী সিস্টেম এটি শনাক্ত করে। ত্রুটি যখন শনাক্ত হয়, তখন প্রোগ্রামের catch
ব্লক (যদি থাকে) সেই এক্সেপশনটি ধরে এবং প্রোগ্রামকে নির্দিষ্ট নির্দেশনা দেয়, অর্থাৎ প্রোগ্রামকে জানায় কিভাবে ওই ত্রুটি সামাল দিতে হবে।
এক্সেপশন হ্যান্ডলিংয়ের জন্য সি# এ বিশেষ কিছু কীওয়ার্ড ব্যবহৃত হয়, যেমন try
, catch
, finally
এবং throw
।
try
ব্লকtry
ব্লকে এমন কোড রাখা হয় যা এক্সেপশন ঘটাতে পারে বলে মনে করা হয়। এটি প্রোগ্রামের সেই অংশকে পরীক্ষা করে যেখানে ত্রুটি ঘটতে পারে।
try
{
int result = 10 / 0; // Division by zero exception ঘটাবে
}
catch
ব্লকtry
ব্লকের কোনো কোডে যদি এক্সেপশন ঘটে, তাহলে এটি catch
ব্লকে চলে আসে, যেখানে এক্সেপশনটি হ্যান্ডল করা হয়। catch
ব্লকে এক্সেপশনের ধরন অনুযায়ী কোড রাখা হয়, যাতে নির্দিষ্ট ত্রুটি হলে সেটি কিভাবে হ্যান্ডল করতে হবে তা নির্ধারিত থাকে।
try
{
int result = 10 / 0;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Division by zero is not allowed: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
ব্লকfinally
ব্লক এমন কোড রাখার জন্য ব্যবহৃত হয়, যা try
বা catch
ব্লকের পরে অবশ্যই চালানো হবে। এটি বিশেষ করে তখন কার্যকরী হয় যখন প্রোগ্রামে রিসোর্স মুক্ত করতে হয়, যেমন, ফাইল বা ডেটাবেস কানেকশন বন্ধ করা।
try
{
int[] numbers = {1, 2, 3};
Console.WriteLine(numbers[5]); // Array index out of bounds exception
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index is out of bounds: " + ex.Message);
}
finally
{
Console.WriteLine("Execution completed, cleaning up resources.");
}
throw
কিওয়ার্ডthrow
কিওয়ার্ড ব্যবহার করে কাস্টম বা নির্দিষ্ট এক্সেপশন ছাড়া হয়। এটি কোনো নির্দিষ্ট শর্তে নতুন একটি এক্সেপশন তৈরি করতে ব্যবহার করা হয় বা কাস্টম মেসেজ সহ এক্সেপশন নিক্ষেপ করা হয়।
public void ValidateAge(int age)
{
if (age < 18)
{
throw new ArgumentException("Age must be 18 or older.");
}
}
এক্সেপশন হ্যান্ডলিংয়ের কিছু গুরুত্বপূর্ণ কারণ রয়েছে, যা একটি প্রোগ্রামকে আরও কার্যকর, নির্ভরযোগ্য এবং ব্যবহারকারী-বান্ধব করে তোলে:
প্রোগ্রামে বিভিন্ন বাগ বা ত্রুটি থাকতে পারে, যা কখনো নির্দিষ্ট পরিস্থিতিতে প্রকাশিত হয়। এক্সেপশন হ্যান্ডলিং এই ধরনের ত্রুটিগুলো চিহ্নিত করতে এবং তাৎক্ষণিকভাবে প্রোগ্রাম চলার সময় হ্যান্ডল করতে সহায়ক। এর ফলে প্রোগ্রামটি আরও দ্রুত এবং নির্ভরযোগ্য হয়ে ওঠে।
একটি প্রোগ্রাম চলাকালীন একটি এক্সেপশন ঘটলে সেটি যদি হ্যান্ডল করা না হয়, তাহলে পুরো প্রোগ্রামটি হঠাৎ করে বন্ধ হয়ে যেতে পারে। এক্সেপশন হ্যান্ডলিং করার মাধ্যমে এই ধরণের ত্রুটিগুলি স্বাভাবিকভাবে সামাল দেওয়া যায়, এবং প্রোগ্রামটি ক্র্যাশ হওয়া থেকে রক্ষা করা যায়।
এক্সেপশন হ্যান্ডলিংয়ের মাধ্যমে প্রোগ্রামে এমন বার্তা দেখানো সম্ভব যা ব্যবহারকারীর জন্য বোধগম্য এবং সহায়ক। এর মাধ্যমে ব্যবহারকারীর কাছে ত্রুটির স্পষ্ট কারণ ও করণীয় জানানো যায়, যা প্রোগ্রামটি ব্যবহারে তাদের স্বাচ্ছন্দ্য দেয়।
প্রোগ্রামে ফাইল, ডেটাবেস, নেটওয়ার্ক কানেকশন প্রভৃতি রিসোর্সের ব্যবহার হতে পারে, যেগুলো সবসময় রিলিজ করা উচিত। finally
ব্লক ব্যবহার করে এসব রিসোর্স হ্যান্ডল করা সম্ভব, যা প্রোগ্রামের কার্যকারিতা বৃদ্ধি করে এবং মেমরি লিক প্রতিরোধ করে।
এক্সেপশন হ্যান্ডলিং ব্যবহারের মাধ্যমে প্রোগ্রামের জটিলতা কমানো যায়। নির্দিষ্ট এক্সেপশন ক্যাচ করে কোডকে সুসংগঠিত ও কার্যকরী রাখা যায়। এক্সেপশন ধরার মাধ্যমে সহজে কোড ডিবাগ করা যায় এবং প্রোগ্রামের লজিক সম্পর্কে স্পষ্ট ধারণা পাওয়া যায়।
নিচে একটি বাস্তব উদাহরণ দেওয়া হলো, যেখানে ফাইল অপেন করার সময় কোনো ত্রুটি ঘটলে সেটি হ্যান্ডল করা হয়েছে এবং সর্বদা ফাইল বন্ধ করা হয়েছে:
using System;
using System.IO;
public class FileReader
{
public void ReadFile(string filePath)
{
StreamReader reader = null;
try
{
reader = new StreamReader(filePath);
Console.WriteLine(reader.ReadToEnd());
}
catch (FileNotFoundException ex)
{
Console.WriteLine("File not found: " + ex.Message);
}
catch (IOException ex)
{
Console.WriteLine("Error reading file: " + ex.Message);
}
finally
{
if (reader != null)
{
reader.Close();
Console.WriteLine("File closed.");
}
}
}
}
এখানে, try
ব্লকে ফাইল পড়ার কোড রয়েছে। যদি ফাইল না পাওয়া যায়, তবে FileNotFoundException
ক্যাচ করে বার্তা দেখানো হয়। যদি অন্য কোনো ইনপুট/আউটপুট ত্রুটি ঘটে, তবে IOException
ক্যাচ হয়। অবশেষে, finally
ব্লকে ফাইল ক্লোজ করার কোড দেওয়া আছে যাতে কোনো অবস্থায় ফাইল খোলা না থাকে।
এক্সেপশন হ্যান্ডলিং প্রোগ্রামের ত্রুটি হ্যান্ডল করার একটি গুরুত্বপূর্ণ প্রক্রিয়া। এটি ত্রুটিগুলো শনাক্ত করতে, ব্যবস্থাপনা করতে এবং নির্দিষ্ট বার্তা দেখাতে সাহায্য করে। এর ফলে প্রোগ্রাম ক্র্যাশ না করে সঠিকভাবে কাজ করতে পারে এবং ব্যবহারকারীর জন্য একটি ভালো অভিজ্ঞতা প্রদান করতে পারে।
সি# এ try
, catch
, এবং finally
ব্লক ব্যবহার করে এক্সেপশন হ্যান্ডলিং প্রক্রিয়াটি আরও বিশদে বুঝিয়ে দেওয়া হলো। এটি প্রোগ্রাম চালানোর সময় যেকোনো ত্রুটি বা অপ্রত্যাশিত ঘটনার সাথে সঠিকভাবে মোকাবিলা করতে সাহায্য করে। এই ব্লকগুলো ব্যবহারের মাধ্যমে প্রোগ্রামের ক্র্যাশ হওয়া থেকে রক্ষা পেতে পারি এবং ব্যবহারকারীদের স্পষ্ট ও সহায়ক বার্তা দেখাতে পারি।
try
ব্লকtry
ব্লক এমন কোড ধারণ করে যেটি এক্সেপশন ঘটাতে পারে। আপনি যেকোনো ধরনের সন্দেহজনক কোড try
ব্লকের মধ্যে রাখেন, যাতে সেই কোড থেকে এক্সেপশন ঘটলে এটি catch
ব্লকে নিয়ে যায়। যদি try
ব্লকের কোড কোনো এক্সেপশন তৈরি না করে, তাহলে catch
ব্লক এড়িয়ে যায় এবং সরাসরি finally
ব্লকে চলে যায়।
উদাহরণস্বরূপ:
try
{
int number = 10;
int result = number / 0; // এখানে Division by zero exception ঘটবে
}
উপরের উদাহরণে, try
ব্লকের কোডে একটি সংখ্যা শূন্য দিয়ে ভাগ করার চেষ্টা করা হয়েছে, যা একটি DivideByZeroException
সৃষ্টি করে।
catch
ব্লকcatch
ব্লক ত্রুটি হ্যান্ডল করে এবং এটি এক বা একাধিক catch
ব্লক ব্যবহার করে নির্দিষ্ট এক্সেপশন ধরতে পারে। প্রতিটি catch
ব্লক নির্দিষ্ট ধরনের এক্সেপশন ধরার জন্য ব্যবহার করা হয়। নির্দিষ্ট প্রকারের এক্সেপশন আগে এবং সাধারণ (Generic) এক্সেপশন পরে রাখতে হয়, কারণ সি# প্রথম পাওয়া catch
ব্লকেই চলে যাবে।
try
{
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[5]); // Array index out of bounds exception
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Error: Array index is out of bounds. " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: Division by zero occurred. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
catch
ব্লক IndexOutOfRangeException
ধরার জন্য। এটি অ্যারে ইনডেক্স আউট অফ বাউন্ড এক্সেপশন হ্যান্ডল করে।catch
ব্লকটি DivideByZeroException
ধরার জন্য।catch
ব্লকটি জেনেরিক Exception
ধরার জন্য, যা অন্যান্য যেকোনো এক্সেপশন ধরতে সক্ষম।প্রতিটি catch
ব্লক:
ex.Message
এক্সেপশনের বিশদ বার্তা প্রদান করে।catch
ব্লকে লগ ফাইল বা ডাটাবেজে ত্রুটি বার্তা সংরক্ষণ করতে পারেন।finally
ব্লকfinally
ব্লক try
এবং catch
ব্লকের পর সর্বদা চালানো হয়, এক্সেপশন ঘটুক বা না ঘটুক। সাধারণত, এটি রিসোর্স রিলিজ (যেমন, ডেটাবেস কানেকশন বা ফাইল হ্যান্ডেল) নিশ্চিত করার জন্য ব্যবহৃত হয়। এটি খুবই গুরুত্বপূর্ণ, কারণ এর মাধ্যমে কোডের নির্ভরযোগ্যতা এবং স্থিতিশীলতা বজায় রাখা সম্ভব হয়।
try
{
// এখানে কিছু কোড লেখা হবে
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("The 'finally' block is always executed.");
}
এখানে finally
ব্লক সব সময় চালানো হবে। উদাহরণস্বরূপ, ডেটাবেস কানেকশন বন্ধ করা বা ফাইল বন্ধ করা নিশ্চিত করতে পারেন যাতে তা লিক না হয়।
throw
কিওয়ার্ডthrow
কিওয়ার্ড দিয়ে একটি নির্দিষ্ট এক্সেপশন তৈরি বা কাস্টম এক্সেপশন ছাড়ার কাজ করা যায়। এটি এমন কোনো পরিস্থিতিতে ব্যবহার করা হয় যেখানে আপনার নিজের কাস্টম এক্সেপশন ছাড়ার প্রয়োজন হয়।
public void ValidateAge(int age)
{
if (age < 18)
{
throw new ArgumentException("Age must be 18 or older.");
}
}
এখানে, ValidateAge
মেথডে যদি age
১৮ এর কম হয়, তাহলে এটি ArgumentException
ছাড়বে। এই ধরনের কাস্টম এক্সেপশন তৈরি করার মাধ্যমে আপনি আপনার প্রোগ্রামের জন্য নির্দিষ্ট চেকিং এবং নিয়ন্ত্রণ তৈরি করতে পারেন।
using System;
public class Program
{
public static void Main()
{
try
{
Console.WriteLine("Enter a number:");
int number = int.Parse(Console.ReadLine());
if (number < 0)
{
throw new ArgumentOutOfRangeException("Number cannot be negative.");
}
Console.WriteLine("Result: " + (100 / number));
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: Division by zero is not allowed. " + ex.Message);
}
catch (ArgumentOutOfRangeException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
catch (FormatException ex)
{
Console.WriteLine("Error: Input is not a valid number. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("Thank you for using the program!");
}
}
}
DivideByZeroException
ঘটবে এবং catch
ব্লক হ্যান্ডল করবে।ArgumentOutOfRangeException
থ্রো হবে এবং catch
ব্লকে হ্যান্ডল হবে।FormatException
ধরা হবে।finally
ব্লক সব সময় "Thank you for using the program!" দেখাবে, ত্রুটি ঘটুক বা না ঘটুক।try
: যেখানে এক্সেপশন ঘটতে পারে এমন কোড রাখা হয়।catch
: নির্দিষ্ট এবং সাধারণ এক্সেপশন হ্যান্ডল করতে ব্যবহৃত হয়।finally
: সবশেষে চালানো হয়, এক্সেপশন ঘটুক বা না ঘটুক।throw
: কাস্টম বা নির্দিষ্ট এক্সেপশন তৈরি করতে ব্যবহৃত হয়।এভাবে try
, catch
, এবং finally
ব্লক ব্যবহার করে সি# প্রোগ্রামে ত্রুটি হ্যান্ডলিং করতে পারি, যা কোডের স্থিতিশীলতা ও নির্ভরযোগ্যতা বৃদ্ধি করে।
সি# এ কাস্টম এক্সেপশন তৈরি করার জন্য, আপনি একটি নতুন ক্লাস তৈরি করবেন, যা Exception
ক্লাস থেকে ইনহেরিট করবে। কাস্টম এক্সেপশন ব্যবহার করে প্রোগ্রামে নির্দিষ্ট ধরনের ত্রুটি বা অবস্থার জন্য বিশেষ বার্তা ও লজিক যোগ করা যায়, যা সাধারণ এক্সেপশন দিয়ে বোঝানো কঠিন।
প্রথমে, একটি নতুন ক্লাস তৈরি করুন, যা Exception
ক্লাস থেকে ইনহেরিট করবে।
Exception
ক্লাসে থাকা কনস্ট্রাক্টরগুলো কাস্টম এক্সেপশন ক্লাসে ব্যবহার করতে পারেন, যাতে কাস্টম বার্তা বা ইনফরমেশন পাঠানো যায়।
নিচে একটি কাস্টম এক্সেপশন ক্লাসের উদাহরণ দেওয়া হলো যেখানে InvalidAgeException
নামের কাস্টম এক্সেপশন তৈরি করা হয়েছে।
using System;
public class InvalidAgeException : Exception
{
// ডিফল্ট কনস্ট্রাক্টর
public InvalidAgeException() : base("Invalid age. Age must be 18 or older.")
{
}
// কাস্টম বার্তার জন্য কনস্ট্রাক্টর
public InvalidAgeException(string message) : base(message)
{
}
// কনস্ট্রাক্টর যা মেসেজ ও ইননার এক্সেপশন নেয়
public InvalidAgeException(string message, Exception innerException) : base(message, innerException)
{
}
}
এই উদাহরণে InvalidAgeException
নামে একটি কাস্টম এক্সেপশন তৈরি করা হয়েছে, যা বয়স যাচাইয়ের সময় ব্যবহৃত হবে।
এখন কাস্টম এক্সেপশন ব্যবহার করার জন্য আমরা একটি মেথড তৈরি করব, যেখানে নির্দিষ্ট শর্ত অনুযায়ী এক্সেপশনটি ছোড়া হবে।
public class AgeValidator
{
public void ValidateAge(int age)
{
if (age < 18)
{
throw new InvalidAgeException("Age must be 18 or older to register.");
}
else
{
Console.WriteLine("Age is valid for registration.");
}
}
}
এখন আমরা try-catch
ব্লকের মাধ্যমে কাস্টম এক্সেপশন হ্যান্ডল করব।
public class Program
{
public static void Main()
{
AgeValidator validator = new AgeValidator();
try
{
validator.ValidateAge(15); // এখানে বয়স ১৫ দেওয়া হয়েছে, যা `InvalidAgeException` ছোড়ে।
}
catch (InvalidAgeException ex)
{
Console.WriteLine("Custom Exception Caught: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
}
}
১. InvalidAgeException ক্লাস: এই ক্লাসটি Exception
ক্লাস থেকে ইনহেরিট করে, এবং আমরা এতে কাস্টম বার্তা প্রদান করার জন্য কয়েকটি কনস্ট্রাক্টর তৈরি করেছি। ২. ValidateAge মেথড: এখানে বয়স যাচাই করা হয়েছে, এবং যদি বয়স ১৮-এর কম হয়, তবে InvalidAgeException
ছোড়া হবে। ৩. try-catch ব্লক: InvalidAgeException
ক্যাচ করে এবং প্রোগ্রামটি ক্র্যাশ না করেই একটি বার্তা দেখায়।
কাস্টম এক্সেপশন তৈরি করার মাধ্যমে প্রোগ্রামে নির্দিষ্ট ধরনের ত্রুটি চিহ্নিত এবং হ্যান্ডল করা সহজ হয়। এটি ত্রুটি বার্তাকে আরও অর্থপূর্ণ করে এবং ডিবাগিং সহজতর করে।
সি# এ throw
কীওয়ার্ড মূলত একটি এক্সেপশন তৈরি বা পুনরায় ছাড়ার জন্য ব্যবহৃত হয়। এটি বিশেষ করে এমন পরিস্থিতিতে সহায়ক যেখানে আপনি চান, নির্দিষ্ট শর্তপূরণ না হলে কোড একটি কাস্টম এক্সেপশন ছুঁড়ে দেবে বা কোনো নির্দিষ্ট ত্রুটি প্রদর্শন করবে। throw
কীওয়ার্ড প্রোগ্রামের এক্সেপশন হ্যান্ডলিং কাঠামোকে আরও কার্যকরী করে তোলে।
throw
কীওয়ার্ড ব্যবহার১. একটি নতুন এক্সেপশন তৈরি করা
যখন আপনি নির্দিষ্ট শর্তে কোডকে একটি কাস্টম ত্রুটি (Exception) ছুঁড়ে দিতে চান, তখন throw
কীওয়ার্ড ব্যবহার করতে পারেন।
public void ValidateAge(int age)
{
if (age < 18)
{
throw new ArgumentException("Age must be 18 or older.");
}
}
এখানে, ValidateAge
মেথডে যদি age
১৮-এর কম হয়, তাহলে throw
কীওয়ার্ড ArgumentException
ছুঁড়ে দেবে। এর ফলে প্রোগ্রাম এই ত্রুটিকে হ্যান্ডল করতে পারবে বা ব্যবহারকারীকে একটি নির্দিষ্ট বার্তা দেখাতে পারবে।
২. এক্সেপশন পুনরায় ছাড়ার জন্য (throw
কেবল)
কখনও কখনও catch
ব্লকে একটি এক্সেপশন ধরার পরেও সেটিকে পুনরায় ছাড়ার প্রয়োজন হতে পারে, যাতে উপরের স্তরের (higher level) কোড সেই এক্সেপশন হ্যান্ডল করতে পারে। এই ক্ষেত্রে শুধুমাত্র throw
ব্যবহার করা হয়।
try
{
int result = Divide(10, 0);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Handling in catch block: " + ex.Message);
throw; // এখানে পুনরায় এক্সেপশন ছাড়া হলো
}
public int Divide(int a, int b)
{
if (b == 0)
{
throw new DivideByZeroException("Cannot divide by zero.");
}
return a / b;
}
এখানে Divide
মেথড DivideByZeroException
ছাড়ছে যদি বিভাজক 0
হয়। catch
ব্লক সেটি প্রথমে হ্যান্ডল করে এবং তারপর throw
দিয়ে আবার ছুঁড়ে দেয়, যা উপরের লেভেল বা কলিং মেথডে হ্যান্ডল করতে পারে।
৩. কাস্টম এক্সেপশন তৈরি করা
কখনও কখনও সাধারণ এক্সেপশন যথেষ্ট নয় এবং আপনাকে একটি কাস্টম এক্সেপশন ক্লাস তৈরি করতে হতে পারে।
public class InvalidAgeException : Exception
{
public InvalidAgeException(string message) : base(message) { }
}
public void CheckAge(int age)
{
if (age < 18)
{
throw new InvalidAgeException("Custom Exception: Age must be 18 or older.");
}
}
এখানে একটি কাস্টম InvalidAgeException
তৈরি করা হয়েছে, যা কেবলমাত্র ১৮-এর কম বয়স হলে ছাড়া হবে।
throw new ExceptionType("Message");
throw;
throw
এর মাধ্যমে নির্দিষ্ট পরিস্থিতিতে ছাড়া।এইভাবে throw
কীওয়ার্ড ব্যবহার করে সি# এ এক্সেপশন হ্যান্ডলিং প্রক্রিয়াকে আরও কার্যকরী ও নিয়ন্ত্রণযোগ্য করা যায়।
আরও দেখুন...