Một ngoại lệ (exception) trong chương trỡnh Java là dấu hiệu chỉ ra rằng cú sự xuất hiện một điều kiện khụng bỡnh thường nào đú.
Khi một ngoại lệ xảy ra, đối tượng tương ứng với ngoại lệ đú được tạo ra. Đối tượng này sau đú được truyền cho phương thức là nơi mà ngoại lệ xảy ra. Đối tượng này chứa thụng tin chi tiết về ngoại lệ. Thụng tin này cú thể được nhận về và được xử lý. Cỏc ngoại lệ này cú thể là một ngoại lệ chuẩn của Java hoặc cú thể là một ngoại lệ do ta tạo ra. Lớp ‘Throwable’ được Java cung cấp là cha của tất cả cỏc ngoại lệ trong Java (lớp đầu tiờn trong cõy thừa kế).
Sau khi bạn đó biết cỏch khai bỏo và nộm ra biệt lệ, thỡ phần việc quan trọng nhất là bắt và xử lý biệt lệ.
Vấn đề đối với người lập trỡnh java là phải biết được đoạn mó nào của anh ta cú thể gõy ra lỗi. Khi họ đó khoanh vựng được đoạn mó cú thể gõy ra lỗi họ sẽ
đặt đoạn mó, cú khả năng gõy ra lỗi đú trong khối try ( thử làm), và đặt đoạn mó
xử lý lỗi trong khối catch ( bắt giữ). Khuụn dạng tổng quỏt như sau:
// Cỏc lệnh cú khả năng gõy lỗi }
catch ( TypeException1 ex){
// Mó đựơc thực thi khi một ngoại lệ TypeException1 đựơc phỏt sinh trong khối try
}
catch ( TypeException2 ex){
// Mó đựơc thực thi khi một ngoại lệ TypeException2 đựơc phỏt sinh trong khối try
} ... ...
catch ( TypeExceptionN ex){
// Mó đựơc thực thi khi một ngoại lệ TypeExceptionN đựơc phỏt sinh trong khối try
} finally{
// khối lệnh nay luụn được thực hiện cho dự ngoại lệ cú xảy ra trong khối try hay khụng.
}
Nếu khụng cú một ngoại lệ nào phỏt sinh trong khối try thỡ cỏc mệnh đề catch sẽ bị bỏ qua, trong trường hợp một trong cỏc cõu lệnh bờn trong khối try gõy ra một ngoại lệ thỡ, thỡ java sẽ bỏ qua cỏc cõu lệnh cũn lại trong khối try để đi tỡm mó xử lý ngoại lệ, nếu kiểu ngoại lệ so khớp với kiểu ngoại lệ trong mệnh đề catch, thỡ mó lệnh trong khối catch đú sẽ được thực thi, nếu khụng tỡm thấy một kiểu ngại lệ nào được so khớp java sẽ kết thỳc phương thức đú và chuyển biệt lệ đú ra phương thức đó gọi phương thức này quỏ trỡnh này được tiếp tục cho đến khi tỡm thấy mó xử lý biệt lệ, nếu khụng tỡm thấy mó xử lý biệt lệ trong chuỗi cỏc
phương thức gọi nhau, chương trỡnh cú thể chấm dứt và in thụng bỏo lỗi ra luồng lỗi chuẩn System.err
Vớ dụ
class TryClass{
public static void main(String args[]) { int n=0;
try{
System.out.println(1/n); }
catch(ArithmeticException ex){
System.out.println(“Loi chia cho 0”); }
} } }
Khi chạy chương trỡnh này ta se thu được một dũng in ra màn hỡnh như sau: Loi chia cho 0
Trong đoạn chương trỡnh trờn khi chia một số cho 0 sẽ gặp ngoại lệ
ArithmeticException, biết được ngoại lệ này cú thể xẩy ra do vậy ta bắt nú và xử
lý trong khối catch(ArithmeticException ex), ở đõy ex là một đối tượng của lớp
ArithmeticException chứa cỏc thụng tin về ngoại lệ xẩy ra, ta cú thể lấy cỏ thụng
tin về ngoại lệ chẳng hạn như lấy về mụ tả ngoại lệ như sau:
System.out.println(a.getMessage()).