www.updatesofts.com
!
"
+
&
Hình 7.1 Khối Try và Catch
Để bắt giữ bất cứ ngoại lệ nào, ta phải chỉ ra kiểu ngoại lệ là ‘Exception’.
catch(Exception e)
Khi ngoại lệ bị bắt giữ không biết thuộc kiểu nào, chúng ta có thể sử dụng lớp ‘Exception’
để bắt ngoại lệ đó.
Khối ‘catch()’ bắt giữ bất cứ các lỗi xảy ra trong khi thi hành phương thức
‘doFileProcessing’ hay ‘display’. Nếu một lỗi xảy ra trong khi thi hành phương thức
‘doFileProcessing()’, lúc đó phương thức ‘displayResults()’ sẽ không bao giờ được gọi. Sự
thi hành sẽ tiếp tục thực hiện khối ‘catch’. Để có nhiều lớp xử lý lỗi hơn, như là
‘LookupException’ thay vì một đối tượng ngoại lệ chung (Exception e), lỗi thật sự sẽ là
một instance của ‘LookupException’ hay một trong số những lớp con của nó. Lỗi sẽ được
truyền qua khối ‘try catch’ cho tới khi chúng bắt gặp một ‘catch’ tham chiếu tới nó hay
toàn bộ chương trình phải bị huỷ bỏ.
7.5 Các khối chứa nhiều Catch
Các khối chứa nhiều ‘catch’ xử lý các kiểu ngoại lệ khác nhau một cách độc lập. Chúng
được liệt kê trong đoạn mã sau:
try
{
doFileProcessing(); // user defined mothod
displayResults(); // user defined method
}
catch(LookupException e) // e – Lookupexception object
{
handleLookupException(e); // user defined handler
}
catch(Exception e)
{
System.err.println(“Error:” + e.printStackTrace());
}
}
Trong trường hợp này, khối ‘catch’ đầu tiên sẽ bắt giữ một ‘LockupException’. Khối ‘catch’
thứ hai sẽ xử lý kiểu ngoại lệ khác với khối ‘catch’ thứ nhất.
Một chương trình cũng có thể chứa các khối ‘try’ lồng nhau. Ví dụ đoạn mã dưới đây:
try
{
statement 1;
statement 2;