Lập trình căn bản Java Xử lý ngoại lệ

16 356 0
Lập trình căn bản Java  Xử lý ngoại lệ

Đ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

Một vài những ngoại lệ xảy ra bởi lỗi của người dùng, một số khác bởi lỗi của lập trình viên và số khác nữa đến từ lỗi của nguồn dữ liệu vật lý. Để hiểu về cách xử lý ngoại lệ trong Java, bạn cần phải hiểu những loại ngoại lệ như sau: Checked Exception: Là ngoại lệ thường xảy ra do người dùng mà không thể lường trước được bởi lập trình viên. Ví dụ, một file được mở, nhưng file đó không thể tìm thấy và ngoại lệ xảy ra. Những ngoại lệ này không thể được bỏ qua trong quá trình biên dịch. Checked Exception là các lớp mà kế thừa lớp Throwable ngoại trừ RuntimeException và Error. Ví dụ như IOException, SQLException, … Checked Exception được kiểm tra tại thời gian biên dịch compiletime. Unchecked Exception: Một ngoại lệ xảy ra ở runtime là ngoại lệ có thể tránh được bởi lập trình viên. Unchecked Exception là các lớp kế thừa RuntimeException, ví dụ ArithmaticException, NullPointerException, ArrayIndexOutOfBoundsException, … Unchecked Exception không được kiểm tra tại compiletime, thay vào đó chúng được kiểm tra tại runtime. Error: Nó không giống các exception, nhưng vấn đề xảy ra vượt quá tầm kiểm soát của lập trình viên hay người dùng. Error được bỏ qua trong code của bạn vì bạn hiếm khi có thể làm gì đó khi chương trình bị error. Ví dụ như OutOfMemoryError, VirtualMachineError, AssertionError, … Nó được bỏ qua trong quá trình Java biên dịch.

Xử lý Ngoại lệ (Processing Exception) Nội dung Ngoại lệ ?  Xử lý Ngoại lệ  Giới thiệu   Java có sẵn chế cho việc kiểm soát lỗi bẫy lỗi Cơ chế giải kiện bất thường hay mã xử lý cản trở chương trình tiếp tục thực như: ◦ ◦ ◦ ◦  Truy cập giới hạn mảng Chia cho Những trỏ Null … Các Ngoại lệ (Exception) cho phép kiểm soát kiện tự động chúng xảy Ngoại lệ gì?    Một Ngoại lệ (Exception) lớp Java Có nhiều lớp dẫn xuất lớp Exception, lớp tương ứng với kiểu lỗi khác hay kiện bất thường mà muốn kiểm soát Cách Java phát sinh Ngoại lệ ◦ Khi có lỗi kiện bất thường xuất đoạn chương trình, Java throw (ném ra) Ngoại lệ ◦ Điều có nghĩa khởi tạo lớp dẫn xuất lớp Exception ◦ Khi phải cần chế để catching (bắt) đoạn chương trình Ném Ngoại lệ    Thực chất, việc ném Ngoại lệ Java 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 phương thức khai báo có khả ném Ngoại lệ, bạn bắt Ngoại lệ sử dụng khối try/catch Nếu Ngoại lệ ném bên khối try, đối tượng Ngoại lệ truyền đối số tới khối catch Ngoại lệ kiểm soát Bắt Ngoại lệ (Catching Exception)    Trong hầu hết trường hợp, phương thức ném Ngoại lệ bạn muốn gọi bạn phải xử lý Ngoại lệ phương thức Tuy nhiên, Ngoại lệ mà phương thức ném lớp dẫn xuất lớp RunTimeException không cần phải tường minh bắt Ngoại lệ (điều bao gồm IndexOutOfBoundsException từ ví dụ trước) Nếu RunTimeException ném không bắt, Java tự động abort (bỏ dở) chương trình in chồng vệt tin ngoại lệ RunTimeException  Một số lớp dẫn xuất lớp RunTimeException ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ArithmeticException IndexOutOfBoundsException NegativeArraySizeException NullPointerException ArrayStoreException ClassCastException IllegalArgumentException SecurityException IllegalMonitorStateException IllegalStateException UnsupportedOperationException Xử lý Ngoại lệ   Xử lý Ngoại lệ sử dụng khối try/catch Ngoài ra, phương thức ném Ngoại lệ 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, phương thức ném nhiều Ngoại lệ, hay khối try gọi hai phương thức khác mà ném hai ngoại lệ khác Nhiều khối catch   Tất ngoại lệ lớp dẫn xuất lớp Exception, khái quát hóa khối catch để chấp nhận nhiều kiểu Ngoại lệ khác việc sử dụng lớp sở Exception Ví dụ: Khối finally    Đôi khi, gọi khối try/catch, Ngoại lệ ném trước số đoạn mã quan trọng cần chạy cuối khối try Khối finally sử dụng chạy mã Dù ngoại lệ ném ra, khối finally luôn thực Ném lại Ngoại lệ    Bạn ném lại Ngoại lệ sau bắt xử lý Nếu bạn ném lại Ngoại lệ, bạn phải rõ phương thức gọi có khả 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ừ đối tượng Ngoại lệ ◦ getCause() ◦ getMessage() ◦ printStackTrace()  Bạn định nghĩa lớp Ngoại lệ phải lớp dẫn xuất lớp Exception hay số lớp dẫn xuất Tóm lại Khái niêm Ngoại lệ  Cách xử lý Ngoại lệ  Một số Ngoại lệ  [...]... 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()... 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ệ  ... 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

Ngày đăng: 15/11/2016, 14:27

Từ khóa liên quan

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

Tài liệu liên quan