Không, chúng ta không thể viết bất kỳ câu lệnh nào ở giữa các khối try, catch và finally và các khối này tạo thành một đơn vị. Chức năng của từ khóa try là xác định đối tượng ngoại lệ và bắt đối tượng ngoại lệ đó và chuyển điều khiển cùng với đối tượng ngoại lệ đã xác định đến khối catch bằng cách tạm dừng thực thi của khối try. Chức năng của khối catch là nhận đối tượng lớp ngoại lệ đã được gửi bởi try và catch đối tượng lớp ngoại lệ đó và gán đối tượng lớp ngoại lệ đó cho tham chiếu của lớp ngoại lệ tương ứng được định nghĩa trong khối catch. Các khối finally là các khối sẽ được thực thi bắt buộc bất kể có ngoại lệ hay không.
Chúng ta có thể viết các câu lệnh như try với catch block, try với nhiều catch blocks, try với finally block và try với catch và finally blocks và không thể viết bất kỳ mã hoặc câu lệnh nào giữa các tổ hợp này. Nếu cố gắng đặt bất kỳ câu lệnh nào giữa các khối này, nó sẽ ném lỗi compile-time.
Cú pháp
try {
// Statements to be monitored for exceptions
} // We can't keep any statements here
catch(Exception ex){
// Catching the exceptions here
} // We can't keep any statements here
finally{
// finally block is optional and can only exist if try or try-catch block is there.
// This block is always executed whether exception is occurred in the try block or not
// and occurred exception is caught in the catch block or not.
// finally block is not executed only for System.exit() and if any Error occurred.
}Ví dụ
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; // This statement throws 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");
}
}Kết quả
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