Một exception ( hay còn gọi là một ngoại lệ) là một vấn đề nảy sinh trong quá trình thực thi chương trình. Khi xảy ra ngoại lệ Khi một ngoại lệ xảy ra thì chương trình sẽ bị gián đoạn một cách bất thường, và phải được xử lý ngay.
Nguyên nhân xảy ra ngoại lệ
Một ngoại lệ có thể xảy ra vì nhiều lý do khác nhau. Sau đây là một số tình huống xảy ra ngoại lệ:
- Người dùng đã nhập dữ liệu không hợp lệ.
- Không tìm thấy tệp cần mở.
- JVM đã hết bộ nhớ.
Một ngoại lệ là do người dùng gây ra, do lỗi của lập trình viên hoặc cách thao tác với các tài nguyên bị lỗi. Dựa trên nguyên lý này ngoại lệ được chia làm 3 loại:
- Checked Exception: là ngoại lệ xảy ra tại thời gian biên dịch, các trường hợp này cũng được gọi là ngoại lệ thời gian biên dịch. Những ngoại lệ này không thể đơn giản được bỏ qua tại thời điểm biên dịch, lập trình viên nên xử lý những ngoại lệ này.
Ví dụ, nếu bạn sử dụng lớp FileReader trong chương trình của bạn để đọc dữ liệu từ một tệp, nếu tệp được chỉ định trong hàm tạo của nó không tồn tại, thì một FileNotFoundException xảy ra, và trình biên dịch sẽ nhắc người lập trình xử lý ngoại lệ.
import java.io.*; public class DemoJava { public static void main(String[] args) { File file = new File("E://file.txt"); FileReader fr = new FileReader(file); } }
Nếu có gắng biên dịch chương trình trên thì bạn sẽ nhận được ngoại lệ sau.
C:>javac FilenotFound_Demo.java FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown FileReader fr = new FileReader(file); ^ 1 error
- Unchecked Exception: Một ngoại lệ không được kiểm soát là một ngoại lệ xảy ra tại thời điểm thực thi. Chúng cũng được gọi là Runtime Exceptions . Chúng bao gồm các lỗi lập trình, chẳng hạn như lỗi logic hoặc sử dụng API không đúng cách. Các ngoại lệ thời gian chạy được bỏ qua tại thời điểm biên dịch.
Ví dụ nếu bạn khai báo một mảng có 4 phần tử nhưng lại cố gắng truy cập phần tử thứ 5 thì sẽ gặp ngoại lệ.
public class DemoJava { public static void main(String[] args) { int[] a = {1,2,3,4}; System.out.println(a[4]); } }
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at com.example.admin.democodejava.DemoJava.main(DemoJava.java:9)
Khi chạy chương trình bạn sẽ gặp ngoại lệ trên.
- Error: Đây không phải là ngoại lệ. Error là những vấn đề phát sinh ngoài sự kiểm soát của người dùng hoặc lập trình viên. Lỗi thường bị bỏ qua trong mã của bạn vì bạn hiếm khi có thể làm bất kỳ điều gì về lỗi.
Phân cấp ngoại lệ
Tất cả các lớp ngoại lệ là các kiểu con của lớp java.lang.Exception. Lớp Exception là một lớp con của lớp Throwable.
Error là những điều kiện bất thường xảy ra trong trường hợp thất bại nghiêm trọng. Những điều này không được xử lý bởi các chương trình Java. Lỗi được tạo ra để cho biết lỗi do môi trường thời gian chạy tạo ra. Ví dụ: JVM hết bộ nhớ. Thông thường, các chương trình không thể phục hồi từ lỗi.
Lớp Exception có hai lớp con chính: lớp IOException và lớp RuntimeException.
Bài viết đến đây là kết thúc. Ở phần sau mình sẽ giới thiệu khối lệnh trycatch và cách bắt ngoại lệ trong java. Cám ơn các bạn đã theo dõi !
Để lại một bình luận