Bài giảng Lập trình Java - Chương 5: Xử lý Ngoại lệ - Lăng Uy Tín

 Ngoại lệ là gì ?  Xử lý Ngoại lệ Giới thiệu  Java có sẵn cơ chế cho việc kiểm soát lỗi và bẫy lỗi  Cơ chế này giải quyết những sự kiện bất thường hay mã xử lý cản trở chương trình tiếp tục thực hiện như: ◦ Truy cập ngoài giới hạn mảng ◦ Chia cho 0 ◦ Những con trỏ Null ◦ …  Các Ngoại lệ (Exception) cho phép chúng ta kiểm soát các sự kiện này tự động khi chúng xảy ra Ngoại lệ là gì?  Một Ngoại lệ (Exception) là một lớp Java  Có nhiều lớp dẫn xuất của lớp Exception, mỗi lớp tương ứng với một kiểu lỗi khác nhau hay sự kiện bất thường mà chúng ta muốn kiểm soát  Cách Java phát sinh Ngoại lệ ◦ Khi có lỗi hoặc sự kiện bất thường xuất hiện trong đoạn chương trình, Java sẽ throw (ném ra) một Ngoại lệ. ◦ Điều này có nghĩa rằng nó sẽ khởi tạo một lớp dẫn xuất của lớp Exception. ◦ Khi đó phải cần một cơ chế để catching (bắt) trong đoạn chương trình đó.

pdf16 trang | Chia sẻ: candy98 | Lượt xem: 442 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Lập trình Java - Chương 5: Xử lý Ngoại lệ - Lăng Uy Tín, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Xử lý Ngoại lệ (Processing Exception) Nội dung  Ngoại lệ là gì ?  Xử lý Ngoại lệ Giới thiệu  Java có sẵn cơ chế cho việc kiểm soát lỗi và bẫy lỗi  Cơ chế này giải quyết những sự kiện bất thường hay mã xử lý cản trở chương trình tiếp tục thực hiện như: ◦ Truy cập ngoài giới hạn mảng ◦ Chia cho 0 ◦ Những con trỏ Null ◦  Các Ngoại lệ (Exception) cho phép chúng ta kiểm soát các sự kiện này tự động khi chúng xảy ra Ngoại lệ là gì?  Một Ngoại lệ (Exception) là một lớp Java  Có nhiều lớp dẫn xuất của lớp Exception, mỗi lớp tương ứng với một kiểu lỗi khác nhau hay sự kiện bất thường mà chúng ta muốn kiểm soát  Cách Java phát sinh Ngoại lệ ◦ Khi có lỗi hoặc sự kiện bất thường xuất hiện trong đoạn chương trình, Java sẽ throw (ném ra) một Ngoại lệ. ◦ Điều này có nghĩa rằng nó sẽ khởi tạo một lớp dẫn xuất của lớp Exception. ◦ Khi đó phải cần một cơ chế để catching (bắt) trong đoạn chương trình đó. Ném Ngoại lệ  Thực chất, việc ném ra các Ngoại lệ trong Java là một cách phương thức kết thúc xử lý  Ví dụ:  Bắt Ngoại lệ (Catching Exception)  Lúc bạn gọi một phương thức đã được khai báo có khả năng ném ra một Ngoại lệ, bạn có thể bắt Ngoại lệ sử dụng một khối try/catch.  Nếu Ngoại lệ được ném bên trong khối try, đối tượng Ngoại lệ được truyền như một đối số tới khối catch ở đó Ngoại lệ có thể được kiểm soát Bắt Ngoại lệ (Catching Exception)  Trong hầu hết các trường hợp, nếu một phương thức có thể ném ra một Ngoại lệ và bạn muốn gọi nó thì bạn phải xử lý Ngoại lệ của phương thức đó  Tuy nhiên, nếu Ngoại lệ mà phương thức ném ra là một lớp dẫn xuất của lớp RunTimeException thì không cần phải tường minh bắt Ngoại lệ (điều này bao gồm IndexOutOfBoundsException từ ví dụ trước)  Nếu một RunTimeException được ném ra và không được bắt, Java sẽ tự động abort (bỏ dở) chương trình và in chồng vệt tin của ngoại lệ. RunTimeException  Một số lớp dẫn xuất của lớp RunTimeException ◦ ArithmeticException ◦ IndexOutOfBoundsException ◦ NegativeArraySizeException ◦ NullPointerException ◦ ArrayStoreException ◦ ClassCastException ◦ IllegalArgumentException ◦ SecurityException ◦ IllegalMonitorStateException ◦ IllegalStateException ◦ UnsupportedOperationException Xử lý Ngoại lệ  Xử lý Ngoại lệ có thể sử dụng khối try/catch.  Ngoài ra, trong các phương thức ném ra cùng Ngoại lệ có thể chuyển việc bắt Ngoại lệ cho đoạn code gọi phương thức đó. Nhiều khối catch  Đôi khi, một phương thức có thể ném ra nhiều hơn một Ngoại lệ, hay khối try có thể gọi hai phương thức khác nhau mà ném ra hai ngoại lệ khác nhau. Nhiều khối catch  Tất cả các ngoại lệ đều là các lớp dẫn xuất của lớp Exception, do đó có thể khái quát hóa các khối catch để chấp nhận nhiều kiểu Ngoại lệ khác nhau bởi việc sử dụng lớp cơ sở Exception.  Ví dụ: Khối finally  Đôi khi, khi gọi khối try/catch, một Ngoại lệ có thể được ném ra trước khi một số đoạn mã quan trọng cần được chạy ở cuối của khối try  Khối finally có thể được sử dụng chạy mã này  Dù một ngoại lệ được ném ra, khối finally luôn luôn thực hiện Ném lại Ngoại lệ  Bạn có thể ném lại Ngoại lệ sau khi bắt và xử lý nó  Nếu bạn ném lại một Ngoại lệ, bạn phải chỉ rõ rằng phương thức gọi có khả năng ném Ngoại lệ.  Ví dụ: Một số Ngoại lệ  Các lớp Ngoại lệ: ◦ IOException ◦ NumberFormatedException ◦ InterruptedException ◦ FileNotFoundException ◦  Các thông tin từ các đối tượng Ngoại lệ ◦ getCause() ◦ getMessage() ◦ printStackTrace()  Bạn cũng có thể định nghĩa lớp Ngoại lệ của mình nhưng phải là một lớp dẫn xuất của lớp Exception hay một trong số những lớp dẫn xuất của nó. Tóm lại  Khái niêm Ngoại lệ  Cách xử lý Ngoại lệ  Một số Ngoại lệ