না, try, catch এবং finally ব্লকের মাঝপথে কোনো স্টেটমেন্ট লিখা যায় না এবং এই ব্লকগুলো একটি ইউনিট তৈরি করে। try কিওয়ার্ডের কাজ হলো এক্সেপশন অবজেক্ট আইডেন্টিফাই করা এবং সেটি ক্যাচ করে, try ব্লকের এক্সিকিউশন সাসপেন্ড করে সেটি catch ব্লকে ট্রান্সফার করা। catch ব্লক-এর কাজ হলো try দ্বারা পাঠানো এক্সেপশন ক্লাস অবজেক্ট রিসিভ করা, সেটি ক্যাচ করা এবং catch ব্লকে ডিফাইন করা এক্সেপশন ক্লাসের রেফারেন্সে অ্যাসাইন করা। finally ব্লকগুলো হলো এমন ব্লক যেগুলো এক্সেপশন হলে বা না হলে বাধ্যতামূলক এক্সিকিউট হয়।
আমরা try with catch block, try with multiple catch blocks, try with finally block এবং try with catch and finally blocks লিখতে পারি কিন্তু এই কম্বিনেশনের মাঝপথে কোনো কোড বা স্টেটমেন্ট লিখা যায় না। যদি এই ব্লকগুলোর মাঝপথে কোনো স্টেটমেন্ট রাখার চেষ্টা করা হয়, তবে কম্পাইল-টাইম এরর হবে।
সিনট্যাক্স
try {
// এক্সেপশন মনিটর করার জন্য স্টেটমেন্ট
} // এখানে কোনো স্টেটমেন্ট রাখা যায় না
catch(Exception ex){
// এক্সেপশন ক্যাচ করা
} // এখানেও কোনো স্টেটমেন্ট রাখা যায় না
finally{
// finally ব্লক অপশনাল এবং শুধু try বা try-catch ব্লক থাকলে এক্সিস্ট করতে পারে।
// এই ব্লক সবসময় এক্সিকিউট হয় এক্সেপশন try ব্লকে হোক বা না হোক
// এবং এক্সেপশন catch ব্লকে ক্যাচ হোক বা না হোক।
// finally ব্লক এক্সিকিউট হয় না শুধু System.exit() এবং কোনো Error হলে।
}
উদাহরণ
public class ExceptionHandlingTest {
public static void main(String[] args) {
System.out.println("We can keep any number of statements here");
try {
int i = 10/0; // এই স্টেটমেন্ট ArithmeticException থ্রো করে
System.out.println("This statement will not be executed");
} //We can't keep statements here
catch(ArithmeticException ex){
System.out.println("This block is executed immediately after an exception is thrown");
} //We can't keep statements here
finally {
System.out.println("This block is always executed");
}
System.out.println("We can keep any number of statements here");
}
}
আউটপুট
We can keep any number of statements here This block is executed immediately after an exception is thrown This block is always executed We can keep any number of statements here