"আহ। তুমি এখানে। আমি তোমাকে খুঁজছি।"

"কোনকিছু কি ঘটেছিলো?"

"না, তবে আমরা এখনও পড়াশোনা করছি।"

"ঠিক আছে। আমি শুনছি।"

"আমি আপনাকে ব্যতিক্রম সম্পর্কে আরও কয়েকটি জিনিস বলতে চাই:"

"জাভা 7-এ, একাধিক ক্যাচ ব্লক যোগ করার মাধ্যমে ট্রাই-ক্যাচ কনস্ট্রাক্টকে কিছুটা বাড়ানো হয়েছিল । এই উদাহরণটি দেখুন:"

জাভা 5
try
{}
 catch (IOException ex)
{
 logger.log(ex);
 throw ex;
}
 catch (SQLException ex)
{
 logger.log(ex);
 throw ex;
}
জাভা 7
try
{}
 catch (IOException | SQLException ex)
{
 logger.log(ex);
 throw ex;
}

"তাহলে এখন আমরা কি OR অপারেটরদের দ্বারা আলাদা করে একাধিক ব্যতিক্রম লিখতে পারি ('|' বাইনারি বা)?"

"ঠিক তাই। এটা কি সুবিধাজনক নয়?"

"হুম। কিন্তু ক্যাচ ব্লকের ভিতরে ব্যতিক্রম বস্তুর ধরন কি হবে?"

"সর্বশেষে, একটি IOException এর পদ্ধতি রয়েছে এবং একটি SQLException এর পদ্ধতি রয়েছে।"

"ব্যতিক্রম প্রকার হবে তাদের সাধারণ পূর্বপুরুষ শ্রেণীর।"

"আহ। অন্য কথায়, এটি সম্ভবত Exeption বা RuntimeException হবে । তাহলে শুধু catch(Exception e) লিখবেন না কেন?"

"কখনও কখনও পৃথকভাবে ত্রুটিগুলি পরিচালনা করার সময়, সেগুলিকে গোষ্ঠীবদ্ধ করা, একটি লগে কিছু ত্রুটি লিখতে, অন্যগুলিকে পুনরায় নিক্ষেপ করা এবং অন্যগুলিকে অন্য কোনও উপায়ে পরিচালনা করা সুবিধাজনক।"

"অন্য কথায়, এই স্কিমটি বিভিন্ন ত্রুটি পরিচালনার জন্য ডুপ্লিকেট ক্যাচ ব্লকের সমস্যার সমাধান হিসাবে স্বীকৃত।"

"আহ। আমি বুঝতে পেরেছি। ধন্যবাদ, এলি।"

"এটাই সব নয়। আমি আপনাকে শেষ অবরোধ সম্পর্কে আরও কিছু বলতে চাই ।"

"আপনি সম্ভবত ইতিমধ্যেই জানেন, এই ব্লকটি সর্বদা কার্যকর করা হয়।"

"এবং যখন আমি সর্বদা বলি, আমি বলতে চাচ্ছি সর্বদা ।"

"উদাহরণ স্বরূপ:"

অবশেষে ব্যবহার করে উদাহরণ
try
{
 return 1;
}
 finally
{
 return 0;
}

"এখানে ট্রাই ব্লকে একটি রিটার্ন আছে , এবং অবশেষে ব্লকে একটি রিটার্ন । তাই এই পদ্ধতির রিটার্ন মান হবে 0 নম্বর।"

" অবশেষে ব্লকটি নির্বাহ করবে যাই ঘটুক না কেন। এবং এর রিটার্ন স্টেটমেন্ট অন্য রিটার্ন মানকে তার নিজস্ব মানের সাথে ওভাররাইট করে।"

"আমি দেখি."

"তবে, একটি পদ্ধতি হয় একটি মান ফেরত দিতে পারে বা একটি ব্যতিক্রম নিক্ষেপ করতে পারে। "

"সুতরাং, যদি একটি মান চেষ্টা ব্লকে ফেরত দেওয়া হয়, কিন্তু অবশেষে ব্লকটি একটি ব্যতিক্রম নিক্ষেপ করে, তাহলে ফলাফলটি একটি ব্যতিক্রম হবে । "

"যদি একটি ব্যতিক্রম চেষ্টা ব্লকে নিক্ষেপ করা হয় কিন্তু অবশেষে ব্লকের একটি রিটার্ন স্টেটমেন্ট থাকে?"

"তাহলে মনে হয় যে পদ্ধতিটি সঠিকভাবে কাজ করেছে এবং রিটার্ন স্টেটমেন্টের মানটি ফেরত দেওয়া হয়েছে।

উদাহরণ ফলাফল
try
{
 return 1;
}
 finally
{
 return 0;
}
0
try
{
 return 1;
}
 finally
{
 throw new RuntimeException();
}
রানটাইম ব্যতিক্রম
try
{
 throw new RuntimeException();
}
 finally
{
 return 0;
}
0
try
{
 throw new RuntimeException();
}
 finally
{
 throw new IOException();
}
IO ব্যতিক্রম

"শেষে পদ্ধতিটি কার্যকর না হওয়ার একমাত্র কারণ হল System.exit(); পদ্ধতিতে কল করে প্রোগ্রামের অবিলম্বে সমাপ্তি ।"

উদাহরণ
try
{
 System.exit(0);
 return 1;
}
 finally
{
 return 0;
}

"আমি দেখি."

"মনে রাখবেন যে এই সমস্ত বিষয়গুলি সাধারণত সাক্ষাত্কারে জিজ্ঞাসা করা হয়, তাই সেগুলি বোঝা এবং মনে রাখা আপনার পক্ষে ভাল হবে।"