Ngoại lệ powerpoin
Chia sẻ bởi Nguyễn Phúc Vĩnh |
Ngày 19/03/2024 |
16
Chia sẻ tài liệu: ngoại lệ powerpoin thuộc Công nghệ thông tin
Nội dung tài liệu:
BÁO CÁO TIN HỌC ĐẠI CƯƠNG 2
Giáo Viên Hướng Dẫn: HUỲNH LÝ THANH NHÀN
Năm Học 2010-2011
Thành Viên Nhóm 3:
1.Trương Thanh Giang
2.Đỗ Hồng Pha
3.Phạm Văn Nhanh
4.Nguyễn Phúc Vĩnh
5.Chau Sóc Xưa
CHỦ ĐỀ
XỬ LÝ NGOẠI LỆ(Exception)
1.KHÁI NIỆM
Exception là một lớp, là một đối tượng đặc biệt được tạo ra khi chương trình gặp lỗi dùng để xử lý tất cả các ngoại lệ, các tình huống liên quan đến phạm vi xác định của các phần tử trong các cấu trúc dữ liệu.
CÁC KHỐI LỆNH TRY, CATCHVÀ FINALLY
Cấu trúc try-catch-finally cho phép sử dụng để xử lý các ngoại lệ có dạng:
try{ //Khối try
}
catch( ) { //khối catch
}
catch ( ) { //khối catch
}
finally {
}} //khối finally
Các ngoại lệ sẽ được cho qua trong quá trình thực hiện khối try và sẽ bị tóm lại để xử ở các khới catch tương ứng. Khối finally phải thực hiện đến cùng, bất luận có gặp phải ngoại lệ hay không.
Khối try
Khối try xác định ngữ cảnh cần xử lý kết thúc thực hiện của một khối lệnh.Sự kết thúc thực hiện của khối lệnh xuất hiện khi:
Gặp phải một ngoại lệ.
Hoặc thực hiện thành công khối try (không gặp ngoại lệ ).
Thực hiện xong khối try và xử lý xong các ngoại lệ khi chúng thực hiện thì phải thực hiện khối finally nếu có chỉ ra trong cấu trúc đó.
Khối cacth
Lối ra của khối try khi gặp phải ngoại lệ có thể chuyển điều khiển chương trình đến khối cacth.Khối này chỉ được sử dụng để xử lý ngoại lệ.Khi một khối cacth được thực hiện thì khối cacth còn lại được bỏ qua.
Trong trường hợp khối finally không xuất hiện thì chúng ta có cấu trúc try-catch.
Khối finally
Khi khối finally có trong đặc tả khối try-cath-finally thì nó được đảm bảo phải thực hiện đến cùng bất luận trong khối try thực hiện như thế nào.
Ví dụ 5.6. Cấu trúc try-catch-finally
puclic class ChiaChoKhong1{
public void chia(){
int n1 = 20;
int n2 = 0;
try{
System.out.println(n1+”/”+n2”=”+(n1/n2));} //(1)
catch (ArithmeticException e){ //(2)
System.out.println(“Gap phai loi :”+e);}
finally{ //(3)
System.out.printfln(“ Nhung viec can thuc hien”);}
System.out.println(“Ket thuc ham chia()”);} //(4)
public static void main(String args[]){
new ChiaChoKhong1().chia(); // (5)
System.out.println(“Quay lai tu ham main!”);}} //(6)
Kết quả tực hiện của chương trình ChiaChoKhong1:
Gap phai loi: java.lang.ArithmeticException: /by zero
Nhung viec can thuc hien
Ket thuc ham chia()
Quay lai tu ham main!
Ví dụ trên chỉ xảy ra cách xử lí ngoại lệ xuất hiện ở (1) thông qua các khối catch ở (2). Sau đó khối finally phải thực hiện (3) rồi mới đến phần còn lại của hàm chia() ở (4).
Lưu ý: khi không sử dụng khối catch để xử lí các ngoại lệ thì khối finally vẫn phải được thực hiện nhưng sau đó các phần còn lại của chương trình sẽ không được thực hiện nếu xuất hiện những ngoại lệ tệ hại như chia cho không.
2.CÂU LỆNH THROWS
Để tạm thời bỏ qua ngoại lệ chúng ta có thể sử dụng cậu lệnh throws.Câu lệnh này có dạng như sau:
Throws
là biểu thức xác định một đối tượng của lớp Throwable hoặc của một trong các lớp con của nó.Thông thường một đối tượng ngoại lệ sẽ được tóm lại và xử lý ở khối cacth.Ví dụ câu lệnh
throw new chiacho0Exeption (“/by zero”);
trong đó lớp chiacho0Exeption làlớp con của Exeption có thể định nghĩa đơn giản như sau:
Class chiacho0Exeption extends Exeption {
chiacho0Exeption extends Exeption(String msg) {super(msg);}
}
Khi một ngoại lệ xuất hiện và được cho qua thì sự thực hiện bình thường của chương trình sẽ bị treo lại để tìm một khối cacth tương ứng và xử lý ngoại lệ đó.Sau khối finally được thực hiện nếu có.Nếu không tìm thấy bộ xử ký ngoại lệ tương ứng trong chương trình thì ngoại lệ đó được xử lý theo cơ chế xử lý ngoại lệ mặc định của hệ thống.
Ví dụ 5.8: Câu lệnh tạm thời cho qua ngoại lệ
Class chiacho0Exeption extends Exeption {
chiacho0Exeption (String msg) {super (msg); }
}
Public class chiachokhong3 {
Public void chia(){
Int n1 =20;
Int n2 =0;
Try { // (1)
If (n2 ==0) throw new chiacho0Exeption(“/by 0); // (2)
System.out.println (n1+” / “+n2+ = “+(n1/n2); //(3)
} catch (chiacho0Exeption er) { // (4)
System.out.println(gap loi: “ +er);
}
Finally {
System.out.println (“Nhung viec can thuc hien”); // (5)
}
System.out.println (“ket thuc ham chia() “); // (6)
}
Public static void main (String args[]){
New Chiachokhong3 ().chia();
System.out.println (“Quay lai ham main ! “); //(7)
}
}
Kết quả thực hiện chương trình chiachokhong3:
Gap phai loi : chiacho0Exeption: / by 0
Nhung viec can thuc hien
Ket thuc ham chia()
Quay lai tu ham main !
Trong ví dụ 5.8,khối try trong hàm chia() tạm thời cho qua ngoại lệ xuất hiện ở(2).Lưu ý phần còn lại (3) của khối try không được thực hiện.Khối Finally (5) được thực hiện sau đó tiếp tục thực hiện bình thường các lệnh (6),(7).
MỆNH ĐỀ THROWS
Khi thiết kế các hàm thành phần,chúng ta có thể sử dụng mệnh đề throws để tạn thời cho qua ngoại lệ mà thực hiện một số công việc cần thiết khác.Những hàm này lại được sử dụng theo cáu trúc try-catch-finally sau đó để xử lý các ngoại lệ khi chúng xuất hieenhj như trên.Chương trình dịch có thể cho qua những lỗi ngoại lệ mà đã được phát hiện nếu trong định nghĩa các hàm có sử dụng kết hợp với mệnh đề throws.Định nghĩa hàm với mệnh đề throws có dạng:
()
Throws {/*…*/}
Trong đó là các lớp xử lý ngoại lệ được kế thừa từ lớp
Exeption và được phân tchs bởi dấu ‘,’.Ví dụ,
Class A{
Protected void classMethA()throws FirstExeption,SecondExeption{
/*…*/
}}
Ví dụ 5.9: Mô tả cách sử dụng mệnh đề throws trong định nghĩ hàm:
Class chiacho0Exeption extends Exeption { // (1)
chiacho0Exeption (String msg) {super(msg); }
}
Public class chiachokhong4 {
Public void chia() throw new chiacho0Exeption { // (2)
Int n1 =20;
Int n2 =0;
If (n2 ==0) throw new chiacho0Exeption(“/by 0); // (3)
System.out.println (n1+” / “+n2+ = “+(n1/n2);
System.out.println (“ket thuc ham chia()”);
}
Public static void main (String args[]){
Try{
New Chiachokhong3 ().chia(); // (4)
} catch (chiacho0Exeption er) {
System.out.println( Trong main() gap loi: : +er);
} finally {
System.out.println (“Nhung viec can thuc hien”); // (5)
}
System.out.println (“Quay lai ham main ! “); // (7)
}
}
Chương trình thực hiện và cho kết quả:
Trong main() gặp lỗi : chiacho0Exeption: / by 0
Nhung viec can thuc hien
Quay lai tu ham main !
Trong ví dụ, hàm main()gọi là hàm chia ()cho qua ngoại lệ đã được kiểm tra thông qua mệnh đè throws.Hàm này không xử lý ngoại lệ ngay sau khi chúng xuất hiện mà đẻ lại xử lý ở khối try-catch-finally trong hàm main().Tất nhiên hàm chia được định nghĩa như trên sẽ kết thúc như trên ngay sau khi gặp ngoại lệ.
Lưu ý: Khi xây dựng hệ thống thường có rất nhiều lỗi(ngoại lệ)khác nhau có thể xãy ra.Để tiện lợi cho việc kiểm soát chúng,người lập trình nên đặt tên cho từng loại ngoại lệ đó cho phù hợp với ngữ cảnh mà chúng xuất hiện và sao cho dễ nhớ.
3.CẤU TRÚC PHÂN CÁCH CỦA CÁC LỚP XỬ LÝ NGOẠI LỆ.
Ngoại lệ trong Java là đối tượng.Tất cả các ngoại lệ điều được dẫn xuất từ lớpThrowable.Hình 5.7 chỉ rõ quan hệ giữa các lớp xử lý ngoại lệ trong cấu trúc phân cấp của chúng.
Trong gói java.lang lớp Error có các lớp con:
LinkedError xử lý các tình huống khi ngoại lệ thực hiện liên kết.
ThreadDeath xử lý tình huống liên quan đến sự sống/chết của các luồng(thread).
VirtualMachineError xử lý các tình huống liên quan đến máy ảo.
Trong gói Java.lang lớp Exeption có các lớp con:
ArryIndexOutOfBoundsExeption xử lý các ngoại lệ khi chỉ số vượt ngoại lệ khỏi phạm vi xác định của mảng.
NullPointerExeption xử lý các tham chiếu đến các đối tượng chưa được khởi tạo.
ClassCastExeption xử lý các lỗi xuất hiện khi thực hiện ép kiểu giữa các lớp.
IlegalArgumentExeption xử lý các lỗi liên quan đến tham biến.
ArithmeticExeption xử lý các lỗi số học,như chia cho 0.
NumberFormatExeption xử lý các lỗi liên quan đến các format của các số.
Trong gói Java.io lớp IOExeption có các lớp con sau:
IOExeption xử lý các lỗi vào/ra
FileNotFoundExeption xử lý các lỗi liên quan đến tệp tồn tại hay không tồn tại.
EOFExeption xử lý các ngoại lệ liên quan đến GUI (giao diện đồ họa với người sử dụng).
Ngoài ra còn khá nhiều lớp ngoại lệ được định nghĩa trong Java,đặc biệt trong gói API.
KẾT THÚC
Giáo Viên Hướng Dẫn: HUỲNH LÝ THANH NHÀN
Năm Học 2010-2011
Thành Viên Nhóm 3:
1.Trương Thanh Giang
2.Đỗ Hồng Pha
3.Phạm Văn Nhanh
4.Nguyễn Phúc Vĩnh
5.Chau Sóc Xưa
CHỦ ĐỀ
XỬ LÝ NGOẠI LỆ(Exception)
1.KHÁI NIỆM
Exception là một lớp, là một đối tượng đặc biệt được tạo ra khi chương trình gặp lỗi dùng để xử lý tất cả các ngoại lệ, các tình huống liên quan đến phạm vi xác định của các phần tử trong các cấu trúc dữ liệu.
CÁC KHỐI LỆNH TRY, CATCHVÀ FINALLY
Cấu trúc try-catch-finally cho phép sử dụng để xử lý các ngoại lệ có dạng:
try{ //Khối try
catch(
catch (
finally {
Các ngoại lệ sẽ được cho qua trong quá trình thực hiện khối try và sẽ bị tóm lại để xử ở các khới catch tương ứng. Khối finally phải thực hiện đến cùng, bất luận có gặp phải ngoại lệ hay không.
Khối try
Khối try xác định ngữ cảnh cần xử lý kết thúc thực hiện của một khối lệnh.Sự kết thúc thực hiện của khối lệnh xuất hiện khi:
Gặp phải một ngoại lệ.
Hoặc thực hiện thành công khối try (không gặp ngoại lệ ).
Thực hiện xong khối try và xử lý xong các ngoại lệ khi chúng thực hiện thì phải thực hiện khối finally nếu có chỉ ra trong cấu trúc đó.
Khối cacth
Lối ra của khối try khi gặp phải ngoại lệ có thể chuyển điều khiển chương trình đến khối cacth.Khối này chỉ được sử dụng để xử lý ngoại lệ.Khi một khối cacth được thực hiện thì khối cacth còn lại được bỏ qua.
Trong trường hợp khối finally không xuất hiện thì chúng ta có cấu trúc try-catch.
Khối finally
Khi khối finally có trong đặc tả khối try-cath-finally thì nó được đảm bảo phải thực hiện đến cùng bất luận trong khối try thực hiện như thế nào.
Ví dụ 5.6. Cấu trúc try-catch-finally
puclic class ChiaChoKhong1{
public void chia(){
int n1 = 20;
int n2 = 0;
try{
System.out.println(n1+”/”+n2”=”+(n1/n2));} //(1)
catch (ArithmeticException e){ //(2)
System.out.println(“Gap phai loi :”+e);}
finally{ //(3)
System.out.printfln(“ Nhung viec can thuc hien”);}
System.out.println(“Ket thuc ham chia()”);} //(4)
public static void main(String args[]){
new ChiaChoKhong1().chia(); // (5)
System.out.println(“Quay lai tu ham main!”);}} //(6)
Kết quả tực hiện của chương trình ChiaChoKhong1:
Gap phai loi: java.lang.ArithmeticException: /by zero
Nhung viec can thuc hien
Ket thuc ham chia()
Quay lai tu ham main!
Ví dụ trên chỉ xảy ra cách xử lí ngoại lệ xuất hiện ở (1) thông qua các khối catch ở (2). Sau đó khối finally phải thực hiện (3) rồi mới đến phần còn lại của hàm chia() ở (4).
Lưu ý: khi không sử dụng khối catch để xử lí các ngoại lệ thì khối finally vẫn phải được thực hiện nhưng sau đó các phần còn lại của chương trình sẽ không được thực hiện nếu xuất hiện những ngoại lệ tệ hại như chia cho không.
2.CÂU LỆNH THROWS
Để tạm thời bỏ qua ngoại lệ chúng ta có thể sử dụng cậu lệnh throws.Câu lệnh này có dạng như sau:
Throws
throw new chiacho0Exeption (“/by zero”);
trong đó lớp chiacho0Exeption làlớp con của Exeption có thể định nghĩa đơn giản như sau:
Class chiacho0Exeption extends Exeption {
chiacho0Exeption extends Exeption(String msg) {super(msg);}
}
Khi một ngoại lệ xuất hiện và được cho qua thì sự thực hiện bình thường của chương trình sẽ bị treo lại để tìm một khối cacth tương ứng và xử lý ngoại lệ đó.Sau khối finally được thực hiện nếu có.Nếu không tìm thấy bộ xử ký ngoại lệ tương ứng trong chương trình thì ngoại lệ đó được xử lý theo cơ chế xử lý ngoại lệ mặc định của hệ thống.
Ví dụ 5.8: Câu lệnh tạm thời cho qua ngoại lệ
Class chiacho0Exeption extends Exeption {
chiacho0Exeption (String msg) {super (msg); }
}
Public class chiachokhong3 {
Public void chia(){
Int n1 =20;
Int n2 =0;
Try { // (1)
If (n2 ==0) throw new chiacho0Exeption(“/by 0); // (2)
System.out.println (n1+” / “+n2+ = “+(n1/n2); //(3)
} catch (chiacho0Exeption er) { // (4)
System.out.println(gap loi: “ +er);
}
Finally {
System.out.println (“Nhung viec can thuc hien”); // (5)
}
System.out.println (“ket thuc ham chia() “); // (6)
}
Public static void main (String args[]){
New Chiachokhong3 ().chia();
System.out.println (“Quay lai ham main ! “); //(7)
}
}
Kết quả thực hiện chương trình chiachokhong3:
Gap phai loi : chiacho0Exeption: / by 0
Nhung viec can thuc hien
Ket thuc ham chia()
Quay lai tu ham main !
Trong ví dụ 5.8,khối try trong hàm chia() tạm thời cho qua ngoại lệ xuất hiện ở(2).Lưu ý phần còn lại (3) của khối try không được thực hiện.Khối Finally (5) được thực hiện sau đó tiếp tục thực hiện bình thường các lệnh (6),(7).
MỆNH ĐỀ THROWS
Khi thiết kế các hàm thành phần,chúng ta có thể sử dụng mệnh đề throws để tạn thời cho qua ngoại lệ mà thực hiện một số công việc cần thiết khác.Những hàm này lại được sử dụng theo cáu trúc try-catch-finally sau đó để xử lý các ngoại lệ khi chúng xuất hieenhj như trên.Chương trình dịch có thể cho qua những lỗi ngoại lệ mà đã được phát hiện nếu trong định nghĩa các hàm có sử dụng kết hợp với mệnh đề throws.Định nghĩa hàm với mệnh đề throws có dạng:
Throws
Trong đó
Exeption và được phân tchs bởi dấu ‘,’.Ví dụ,
Class A{
Protected void classMethA()throws FirstExeption,SecondExeption{
/*…*/
}}
Ví dụ 5.9: Mô tả cách sử dụng mệnh đề throws trong định nghĩ hàm:
Class chiacho0Exeption extends Exeption { // (1)
chiacho0Exeption (String msg) {super(msg); }
}
Public class chiachokhong4 {
Public void chia() throw new chiacho0Exeption { // (2)
Int n1 =20;
Int n2 =0;
If (n2 ==0) throw new chiacho0Exeption(“/by 0); // (3)
System.out.println (n1+” / “+n2+ = “+(n1/n2);
System.out.println (“ket thuc ham chia()”);
}
Public static void main (String args[]){
Try{
New Chiachokhong3 ().chia(); // (4)
} catch (chiacho0Exeption er) {
System.out.println( Trong main() gap loi: : +er);
} finally {
System.out.println (“Nhung viec can thuc hien”); // (5)
}
System.out.println (“Quay lai ham main ! “); // (7)
}
}
Chương trình thực hiện và cho kết quả:
Trong main() gặp lỗi : chiacho0Exeption: / by 0
Nhung viec can thuc hien
Quay lai tu ham main !
Trong ví dụ, hàm main()gọi là hàm chia ()cho qua ngoại lệ đã được kiểm tra thông qua mệnh đè throws.Hàm này không xử lý ngoại lệ ngay sau khi chúng xuất hiện mà đẻ lại xử lý ở khối try-catch-finally trong hàm main().Tất nhiên hàm chia được định nghĩa như trên sẽ kết thúc như trên ngay sau khi gặp ngoại lệ.
Lưu ý: Khi xây dựng hệ thống thường có rất nhiều lỗi(ngoại lệ)khác nhau có thể xãy ra.Để tiện lợi cho việc kiểm soát chúng,người lập trình nên đặt tên cho từng loại ngoại lệ đó cho phù hợp với ngữ cảnh mà chúng xuất hiện và sao cho dễ nhớ.
3.CẤU TRÚC PHÂN CÁCH CỦA CÁC LỚP XỬ LÝ NGOẠI LỆ.
Ngoại lệ trong Java là đối tượng.Tất cả các ngoại lệ điều được dẫn xuất từ lớpThrowable.Hình 5.7 chỉ rõ quan hệ giữa các lớp xử lý ngoại lệ trong cấu trúc phân cấp của chúng.
Trong gói java.lang lớp Error có các lớp con:
LinkedError xử lý các tình huống khi ngoại lệ thực hiện liên kết.
ThreadDeath xử lý tình huống liên quan đến sự sống/chết của các luồng(thread).
VirtualMachineError xử lý các tình huống liên quan đến máy ảo.
Trong gói Java.lang lớp Exeption có các lớp con:
ArryIndexOutOfBoundsExeption xử lý các ngoại lệ khi chỉ số vượt ngoại lệ khỏi phạm vi xác định của mảng.
NullPointerExeption xử lý các tham chiếu đến các đối tượng chưa được khởi tạo.
ClassCastExeption xử lý các lỗi xuất hiện khi thực hiện ép kiểu giữa các lớp.
IlegalArgumentExeption xử lý các lỗi liên quan đến tham biến.
ArithmeticExeption xử lý các lỗi số học,như chia cho 0.
NumberFormatExeption xử lý các lỗi liên quan đến các format của các số.
Trong gói Java.io lớp IOExeption có các lớp con sau:
IOExeption xử lý các lỗi vào/ra
FileNotFoundExeption xử lý các lỗi liên quan đến tệp tồn tại hay không tồn tại.
EOFExeption xử lý các ngoại lệ liên quan đến GUI (giao diện đồ họa với người sử dụng).
Ngoài ra còn khá nhiều lớp ngoại lệ được định nghĩa trong Java,đặc biệt trong gói API.
KẾT THÚC
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Phúc Vĩnh
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)