চেষ্টাটি ব্লকটি শেষ হওয়ার পরে সর্বশেষে অবরুদ্ধভাবে চালানো হয়, চেষ্টা ব্যতিক্রম হিসাবে শেষ হয় কিনা বা অস্বাভাবিকভাবে ব্যতিক্রম হয়, ত্রুটিযুক্ত।
যদি চেষ্টা ব্লকের মধ্যে কোনও কোড দ্বারা একটি ব্যতিক্রম ছুঁড়ে ফেলা হয়, তবে বর্তমান পদ্ধতিটি কেবল একই ব্যতিক্রমটিকে (আবার শেষ অবধি চালানোর পরে) পুনরায় নিক্ষেপ করে।
যদি শেষ অবধি ব্লকটি একটি ব্যতিক্রম / ত্রুটি / নিক্ষেপযোগ্য ছুঁড়ে ফেলে এবং ইতিমধ্যে একটি মুলতুবি থ্রোয়েবল থাকে তবে তা কুশ্রী হয়ে যায়। একদম সত্যি বলতে কি ঘটে যায় আমি ঠিক ভুলে যাই (আমার শংসাপত্রের জন্য এত বছর আগে)। আমি মনে করি উভয় নিক্ষেপযোগ্য একসাথে সংযুক্ত হয়ে গেছে, তবে "অবশেষে" বারফেড, এর, ছুঁড়ে ফেলার আগে আসল সমস্যাটি পাওয়ার জন্য আপনাকে কিছু বিশেষ ভুডো করতে হবে (যেমন - একটি পদ্ধতি কল আমাকে সন্ধান করতে হবে)।
ঘটনাক্রমে, চেষ্টা / শেষ অবধি রিসোর্স ম্যানেজমেন্টের জন্য করণীয় একটি সাধারণ বিষয়, যেহেতু জাভার কোনও ডেস্ট্রাক্টর নেই।
যেমন -
r = new LeakyThing();
try { useResource( r); }
finally { r.release(); } // close, destroy, etc
"অবশেষে", আরও একটি টিপ: যদি আপনি না একটি ধরা করিয়ে বিরক্ত হয় ধরা নির্দিষ্ট (EXPECTED) নিক্ষেপযোগ্য উপশ্রেণী, বা শুধু ধরা "নিক্ষেপযোগ্য", না "ব্যতিক্রম", একটি সাধারণ সকল-ক্যাচ ত্রুটি ফাঁদ জন্য। অনেকগুলি সমস্যা যেমন রিফ্লেকশন গোফস, "ব্যতিক্রম" না করে "ত্রুটিগুলি" ফেলে দিন এবং এগুলি কোডেড যে কোনও "ক্যাচ অল" দ্বারা ডানদিকে পিছলে যাবে:
catch ( Exception e) ... // doesn't really catch *all*, eh?
পরিবর্তে এটি করুন:
catch ( Throwable t) ...