on
Bạn đang đọc: Exception là gì? Cách quản lý lỗi tốt nhất trong Java.
Nội dung chính
1. Exception là gì?
Exception là một sự kiện xảy ra trong quá trình thực thi một chương trình Java nó làm phá vỡ cái flow bình thường của một chương trình.
Khi một lỗi xảy ra trên một method, method đó sẽ tạo ra một object và đưa nó vào Runtime System. Object đó được gọi là Exception Object, nó chứa toàn bộ những thông tin về lỗi và trạng thái của chương trình khi xảy ra lỗi. Sau đó Runtime System sẽ giải quyết và xử lý sẽ tìm cách giải quyết và xử lý lỗi này .
Quá trình xử lý Exception được gọi là catch Exception, nếu Runtime System không xử lý được ngoại lệ thì chương trình sẽ kết thúc.
2. Mô hình Exception trong Java
Mô hình exception trong Java
3. Các loại Exception trong Java
Trong Java có 2 loại Exception là Checked exceptions và UnChecked exceptions.
Checked exceptions:
Là loại exception xảy ra trong lúc compile time, nó cũng hoàn toàn có thể được gọi là compile time exceptions. Loại exception này không hề bỏ lỡ được trong quy trình compile, bắt buộc ta phải handle nó .
Ví dụ : IOException, FileNotFoundException ….
UnChecked exceptions:
Là loại exception xảy ra tại thời điểm thực thi chương trình, nó cũng có thể gọi là runtime exceptions đó là programming bugs, lỗi logic của chương trình… Loại exception này được bỏ qua trong quá trình compile, không bắt buộc ta phai handle nó.
Ví dụ : NumberFormatException, ArrayIndexOutOfBoundsException …
Errors:
Là những yếu tố nghiêm trọng tương quan đến thiên nhiên và môi trường thực thi của ứng dụng, mạng lưới hệ thống. Nó thường làm chết chương trình .
Ví dụ :OutOfMemoryError, LinkageError, and StackOverflowError.
4. Cách bắt lỗi trong Java
Để bắt lỗi trong Java ta sử dụng từ khóa try – catch và finally blocks. Ta cũng có thể dùng try-with-resources có từ Java 7. try-with-resources được dùng riêng biệt trong trường hợp xử dụng Closeable
resources như là streams.
Có 2 cách xử lý lỗi trong Java là xử lý lỗi trực tiếp bằng try-catch và xử lý lỗi giáng tiếp bằng throws
a. try-catch:
Xử lý lỗi tại chổ tại khối lệnh có thể phát sinh ra lỗi và chương trình có thể chạy tiếp những lệnh tiếp theo. Hoặc là bắt lỗi để chuyển thành một lỗi khác và đưa ra ngoài xử lý.
Cú pháp:
Single catch block
Multiple catch blocks
Ví dụ:
Error : String index out of range : – 20
After error ..
continuing ……..
Ta thấy rằng sau khi xảy ra lỗi chương trình vẫn tiếp tục chạy những lệnh tiếp theo..
b. throws:
Là để ném lỗi ra ngoài để xử lý lỗi.. không chạy tiếp những lệnh tiếp theo trong method sau khi đã ném lỗi.
Ví dụ:
Kết quả:
Error : Get name has error ..
Finish ……..
Ta thấy sau khi ném lỗi StringIndexOutOfBoundsException ra ngoài thì “continuing……..” không được in ra.. tức là những lệnh tiếp theo không được chạy. Và lỗi này đã được đưa ra ngoài đễ xử lý.
Note:
-
Throw: để quăng ra Exception ở bất kỳ dòng nào trong phương thức (sau đó dùng try-catch để bắt hoặc throws cho thằng khác sử lý)
-
Throws: Chỉ có phương thức mới được sử dụng. Khi một phương thức có throw bên trong mà không bắt lại (try – catch) thì phải ném đi (throws) cho thằng khác xử lý.
Để bắt lỗi trong Java ta sử dụng từ khóavàblocks. Ta cũng hoàn toàn có thể dùngcó từ Java 7. try-with-resources được dùng riêng không liên quan gì đến nhau trong trường hợp xử dụngresources như là streams. Có 2 cách giải quyết và xử lý lỗi trong Java là giải quyết và xử lý lỗi trực tiếp bằngvà giải quyết và xử lý lỗi giáng tiếp bằngXử lý lỗi tại chổ tại khối lệnh hoàn toàn có thể phát sinh ra lỗi và chương trình hoàn toàn có thể chạy tiếp những lệnh tiếp theo. Hoặc là bắt lỗi để chuyển thành một lỗi khác và đưa ra ngoài giải quyết và xử lý. Single catch blockMultiple catch blocksVí dụ : Kết quả : Là để ném lỗi ra ngoài để giải quyết và xử lý lỗi .. không chạy tiếp những lệnh tiếp theo trong method sau khi đã ném lỗi. Ví dụ : Kết quả :
Source: http://139.180.218.5
Category: Thuật ngữ đời thường