"আরো কিছু আকর্ষণীয় পাঠ। ওহ, আমি শেখাতে কত ভালোবাসি!"
"মাল্টিপল ক্যাচ ব্লক কিভাবে কাজ করে সে সম্পর্কে আমি আপনাকে বলতে চাই । এটা খুবই সহজ: যখন ট্রাই ব্লকে ব্যতিক্রম ঘটে , তখন এক্সিকিউশন প্রথম ক্যাচ ব্লকে চলে যায়।"
"যদি ক্যাচ ব্লকের বন্ধনীতে নির্দেশিত একটি টাইপ নিক্ষিপ্ত ব্যতিক্রমের প্রকারের সাথে মিলে যায়, তাহলে সেই ব্লকের ভিতরেই এক্সিকিউশন শুরু হয়। অন্যথায়, আমরা পরবর্তী ক্যাচ ব্লকে চলে যাই, যেখানে একই চেক করা হয়।"
"যদি আমাদের ক্যাচ ব্লকগুলি ফুরিয়ে যায় এবং ব্যতিক্রমটি ধরা না পড়ে, তবে এটি পুনরায় নিক্ষেপ করা হবে এবং বর্তমান পদ্ধতিটি অস্বাভাবিকভাবে বন্ধ হয়ে যাবে।"
"আমি দেখতে পাচ্ছি। যে ক্যাচ ব্লকটি ব্যতিক্রম প্রকারের সাথে মিলে যায় সেটিই কার্যকর করা হবে।"
"হ্যাঁ, ঠিক আছে। যাইহোক, বাস্তবে এটি একটু বেশি জটিল। ক্লাসগুলি অন্যান্য ক্লাসের উত্তরাধিকারী হতে পারে। যদি একটি গরু শ্রেণী একটি পশু শ্রেণীর উত্তরাধিকারী হয়, তাহলে গরু বস্তুটি শুধুমাত্র একটি গরুর পরিবর্তনশীল দ্বারা নয়, একটি প্রাণী পরিবর্তনশীল দ্বারাও উল্লেখ করা যেতে পারে। "
"এবং?"
"যেহেতু সব ব্যতিক্রমই ব্যতিক্রম বা RuntimeException ( যা ব্যতিক্রমও উত্তরাধিকারী হয় ), তারা এখনও 'catch ( Exception e)' বা ' catch (RuntimeException e) ' ব্যবহার করে ধরা যেতে পারে।"
"এবং?"
"আমরা দুটি সিদ্ধান্তে আসতে পারি। প্রথমত, কোনো ব্যতিক্রম ধরতে আপনি 'ক্যাচ (ব্যতিক্রম ই)' ব্যবহার করতে পারেন। দ্বিতীয়ত, ক্যাচ ব্লকের ক্রম গুরুত্বপূর্ণ। "
"এখানে কিছু উদাহরণঃ:"
" ArithmeticException
আমরা 0 দ্বারা ভাগ করার পরে যেটি ঘটে তা দ্বিতীয় ক্যাচ ব্লকে ধরা পড়বে।"
try
{
System.out.println("Before calling method1.");
int a = 1 / 0;
System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
System.out.println("Division by zero. Exception has been caught.");
}
catch (Exception e)
{
System.out.println("Any other errors. Exception has been caught.");
}
"নীচের উদাহরণে, উইলটি ArithmeticException
প্রথম ক্যাচ ব্লকে ধরা পড়বে, কারণ সমস্ত ব্যতিক্রম ব্যতিক্রমের উত্তরাধিকারী হয়, অর্থাৎ Exception
সমস্ত ব্যতিক্রম কভার করে। "
try
{
System.out.println("Before calling method1.");
int a = 1/0;
System.out.println("After calling method1. This will never be shown.");
}
catch (Exception e)
{
System.out.println("Any other errors. Exception has been caught.");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
System.out.println("Divided by zero. Exception has been caught.");
}
"নীচের উদাহরণে, ArithmeticException
ধরা পড়বে না। এটি কলিং পদ্ধতিতে পুনঃনিক্ষেপ করা হবে।"
try
{
System.out.println("Before calling method1.");
int a = 1/0;
System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught.");
}
"এটি জিনিসগুলিকে কিছুটা পরিষ্কার করেছে। এই ব্যতিক্রমগুলি সবচেয়ে সহজ বিষয় নয়।"
"এটি কেবল সেভাবেই মনে হয়। তারা আসলে জাভাতে সবচেয়ে সহজ জিনিসগুলির মধ্যে একটি।"
"আমি জানি না এটা নিয়ে খুশি হব নাকি দুঃখ পাব..."
GO TO FULL VERSION