1. Trang chủ
  2. » Công Nghệ Thông Tin

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

16 357 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 1,82 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

Xử lý Ngoại lệ

(Processing Exception)

Trang 2

Nội dung

 Ngoại lệ là gì ?

 Xử lý Ngoại lệ

Trang 3

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

Trang 4

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 đó.

Trang 5

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ụ:

Trang 6

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

Trang 7

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ệ

Trang 8

 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

Trang 9

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 đó

Trang 10

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.

Trang 11

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ụ:

Trang 12

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

Trang 13

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ụ:

Trang 14

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ó.

Trang 15

Tóm lại

 Khái niêm Ngoại lệ

 Cách xử lý Ngoại lệ

 Một số Ngoại lệ

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

TỪ KHÓA LIÊN QUAN

w