ngoại lệ powerpoin

16 187 0
Tài liệu đã được kiểm tra trùng lặp
ngoại lệ powerpoin

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin 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 <các câu lệnh>} catch(<kiểu ngoại lệ 1> <tham biến 1>) { //khối catch <các câu lệnh xử lý khi xuất hiện kiểu ngoại lệ 1>} catch (<kiểu ngoại lệ n> <tham biến n>) { //khối catch <các câu lệnh xử lý khi xuất hiện kiểu ngoại lệ n>} finally { <các khối câu lệnh phải được thực hiện đến cùng>}} //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 <Biểu thức tham chiếu đối tượng ngoại lệ> <Biểu thức tham chiếu đối tượng ngoại lệ> 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). [...]... 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... 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... 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... 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:... 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... 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 . catch(<kiểu ngoại lệ 1> <tham biến 1>) { //khối catch <các câu lệnh xử lý khi xuất hiện kiểu ngoại lệ 1>} catch (<kiểu ngoại lệ n> <tham. 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

Ngày đăng: 11/10/2013, 07:11

Tài liệu cùng người dùng

Tài liệu liên quan