Exception là một tình trạng bất thường. Một exception (ngoại lệ) trong Java là một vấn đề xảy ra trong quá trình thực hiện của chương trình mà phá vỡ luồng chuẩn của chương trình.
Tóm Tắt
Exception trong Java là gì
Mô hình sử lý ngoại lệ của java dựa trên ba hoạt động chính: đặc tả ngoại lệ, ném ra ngoại lệ, và bắt ngoại lệ. Mỗi phương thức đều có thể phát sinh các ngoại lệ, các ngoại lệ có thể phát sinh cần được mô tả chi tiết trong lệnh khai báo của phương thức, việc khai báo này đựơc gọi là đặc tả ngoại lệ.
Khi một câu lệnh trong phương pháp gây lỗi, mà người lập trình không cung ứng mã xử lý lỗi, thì ngoại lệ được chuyển đến phương pháp gọi phương pháp đó, việc này được gọi là ném ra biệt lệ, ta hoàn toàn có thể ném ra biệt lệ một cách tường minh ( điều này sẽ được giới thiếu sau ) .
Đối với người lập trình họ có thể gặp một trong các lỗi sau:
Bạn đang đọc: Xử lý ngoại lệ (Exception) trong Java
- Lỗi cú pháp (syntac error)
- Lỗi logic thuật toán
- Lỗi lúc thực thi ( runtime error)
Đối với lỗi cú pháp người lập trình hoàn toàn có thể phát hiện và sửa lỗi, dựa vào trình biên dịch, đây là lỗi dễ phát hiện và sửa chữa thay thế, tuy nhiêmn đây cũng là lỗi gây khó khăn vất vả và chán nản so với người mới học lập trình .
Đối với lỗi thuật toán, đây là lỗi khó phát hiện và thay thế sửa chữa nhất, tuy nhiên trong bài này ta không bàn luận về yếu tố này .
Đối với lỗi lúc thực thi, ta trọn vẹn hoàn toàn có thể trấn áp được chúng, thường thì lỗi runtime thường do nguyên do khách quan như : truy vấn vào một ổ đĩa nhưng ổ đĩa này lại chưa sẵn sàng chuẩn bị, hay triển khai phép chia nhưng mẫu số lại bằng 0, liên kết với máy tính ở xa nhưng máy đó lại không sống sót …, khi một lỗi runtime xẩy ra JVM sẽ phát sinh một ngoại lệ, nếu một chương trình không cung ứng mã sử lý ngoại lệ hoàn toàn có thể kết thúc không thông thường, trong bài thời điểm ngày hôm nay ta sẽ bàn về yếu tố sử lý ngoại lệ trong java .
Ví dụ :
- Người dùng nhập dữ liệu không hợp lệ.
- Một file cần được mở nhưng không thể tìm thấy.
- Kết nối mạng bị ngắt trong quá trình thực hiện giao tiếp hoặc JVM hết bộ nhớ.
Để 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
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 compile-time.
Unchecked Exception
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 compile-time, 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.
Giả sử có 10 lệnh trong chương trình của bạn và Open một Exception tại lệnh 5, phần còn lại của code sẽ không được thực thi ( từ lệnh 6 tới lệnh 10 ). Nếu tất cả chúng ta triển khai Exception Handling, phần lệnh còn lại sẽ được thực thi. Đó là ý nghĩa của việc sử dụng Exception Handling trong Java .
statement 1;
statement 2;
statement 3
;
statement 4;
statement 5;
statement 6;
statement 7;
statement 8;
statement 9;
statement 10;
Hệ thống cấp bậc của các lớp ngoại lệ trong Java
Tất cả các lớp exception đều là lớp con của lớp java.lang.Exception
. Lớp exception là lớp con của lớp Throwable. Một loại lớp exception khác là Error
cũng là lớp con của lớp Throwable
.
Erros không thường được đặt bẫy bởi những chương trình Java. Error thường được tạo ra để bộc lộ lỗi trong thiên nhiên và môi trường runtime. Ví dụ : JVM hết bộ nhớ. Thông thường những chương trình không hề Phục hồi từ những lỗi .
Các kiểu ngoại lệ phổ biến
Phương thức | Miêu tả |
---|---|
IOException | Trả về một message cụ thể về exception đã xảy ra. Message này được khởi tạo bởi phương thức contructor của Throwable |
SQLException | Ngoại lệ liên quan đến cú pháp SQL |
DataAccessException | Ngoại lệ liên quan đến việc truy cập CSDL |
ClassNotFoundException | Bị ném khi JVM không thể tìm thấy một lớp mà nó cần, do lỗi dòng lệnh, sự cố đường dẫn hoặc tệp, class bị thiếu… |
InstantiationException | Ngoại lệ khi cố gắng tạo đối tượng của một abstract class hoặc interface |
NullPointerException | Ngoại lệ bị ném ra khi cố gắng truy cập một đối tượng có biến tham chiếu có giá trị hiện tại là null |
ArrayIndexOutOfBound | Ngoại lệ khi cố gắng truy cập một phần tử vượt quá độ dài của mảng |
IllegalArgumentException | Ngoại lệ bị ném ra khi một phương thức nhận được một đối số được định dạng khác với phương thức mong đợi. |
IllegalStateException | Ngoại lệ bị ném ra khi trạng thái của môi trường không phù hợp với hoạt động cố gắng thực hiện, ví dụ: Sử dụng Scanner đã bị đóng. |
NumberFormatException | Ngoại lệ bị ném khi một phương thức chuyển đổi một Chuỗi thành số nhưng không thể chuyển đổi. |
ArithmeticException | Lỗi số học, chẳng hạn như chia cho 0. |
Source: https://final-blade.com
Category : Kiến thức Internet