Hướng dẫn runtimeexception php
Show Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. Nội dung chính
1- Exception là gì? Trước hết chúng ta hãy xem một ví dụ minh họa sau: HelloException.java
Kết quả chạy ví dụ:
Hãy xem luồng đi của chương trình qua hình minh họa dưới đây.
Chúng ta sẽ sửa code của ví dụ trên. HelloCatchException.java
Và kết quả chạy ví dụ:
Chúng ta sẽ giải thích bằng hình minh họa dưới đây về luồng đi của chương trình.
2- Hệ thống phân cấp ngoại lệĐây là mô hình sơ đồ phân cấp của Exception trong java.
Trong nhánh Exception có một nhánh con RuntimeException là các ngoại lệ sẽ không được java kiểm tra trong thời điểm biên dịch.Ý nghĩa của được kiểm tra và không được kiểm tra tại thời điểm biên dịch sẽ được minh họa trong các ví dụ phần sau.
Error Khi liên kết động thất bại, hoặc trong máy ảo xẩy ra một vấn đề nghiêm trọng, nó sẽ ném ra một Error. Các chương trình Java điển hình không nên bắt lỗi (Error). Ngoài ra, nó không chắc rằng các chương trình Java điển hình sẽ bao giờ ném lỗi
Exceptions Hầu hết các chương trình ném và bắt các đối tượng là con của class Exception. Trường hợp Exception cho thấy một vấn đề xảy ra nhưng vấn đề không phải là một vấn đề mang tính hệ thống nghiêm trọng. Hầu hết các chương trình bạn viết sẽ ném và bắt Exception. Class Exception có nhiều class con cháu được định nghĩa trong gói Java. Những hậu duệ cho nhiều loại hình trường hợp ngoại lệ có thể xảy ra. Ví dụ, NegativeArraySizeException được ném ra khi bạn cố gắng tạo một mảng (array) mà lại có số phần tử âm. Một class ngoại lệ con có ý nghĩa đặc biệt trong ngôn ngữ Java: RuntimeException. Runtime Exceptions Class RuntimeException đại diện cho trường hợp ngoại lệ xảy ra trong thời gian chạy chương trình. Một ví dụ về một ngoại lệ thời gian chạy là NullPointerException, xảy ra khi một bạn truy cập vào method hoặc field một đối tượng thông qua một tham chiếu null. Với các ngoại lệ kiểu này người ta thường kiểm tra để đảm bảo rằng đối tượng này khác null, hơn là tìm bắt ngoại lệ. Bởi vì trường hợp ngoại lệ thời gian chạy rất phổ biến và cố gắng bắt hoặc chỉ định tất cả chúng là cách làm không hiệu quả. Trình biên dịch của Java không kiểm tra các ngoại lệ này trong quá trình biên dịch code. Java định nghĩa một vài lớp RuntimeException. Bạn có thể bắt (Catch) những trường hợp ngoại lệ này như cách bắt các ngoại lệ thông thường khác. Các method mà trong nó có thể ném ra RuntimeException cũng không đòi hỏi phải khai báo trên định nghĩa của nó. Ngoài ra, bạn có thể tạo lớp con RuntimeException của riêng bạn. 3- Bắt ngoại lệ thông qua try-catchChúng ta viết một exception thừa kế từ class Exception. AgeException.java
TooYoungException.java
TooOldException.java
Và class AgeUtils có method tĩnh dùng cho việc kiểm tra tuổi. AgeUtils.java
Checked Exception & Unchecked Exception:
"Checked exception" sẽ được "Java Compiler" kiểm tra. Bạn có hai sự lựa chọn sử lý:
TryCatchDemo1.java
Ví dụ dưới đây, chúng ta sẽ gộp bắt các ngoại lệ thông qua ngoại lệ ở cấp cao hơn. Ở cấp cao hơn nó sẽ tóm được ngoại lệ đó và tất cả các ngoại lệ con. TryCatchDemo2.java
Bạn cũng có thể gộp xử lý các ngoại lệ khác nhau vào cùng một khối catch để sử lý nếu chúng có cách xử lý giống nhau trong logic chương trình của bạn. TryCatchDemo3.java
4- Khối try-catch-finallyTrên kia chúng ta đã làm quen với việc bắt lỗi thông qua khối try-catch. Việc xử lý ngoại lệ đầy đủ là try-catch-finally.
TryCatchFinallyDemo.java
Đây là sơ luồng đi của chương trình. Khối finally luôn được thực thi. 5- Gói một Exception trong một Exception khácChúng ta cần một vài class tham gia vào ví dụ này:
Person.java
GenderException.java
Class ValidateException bao lấy một Exception khác. ValidateException.java
ValidateUtils.java
WrapperExceptionDemo.java
6- RuntimeException và các class conClass RuntimeException và các class con, cháu của nó đều là các "Unchecked exception". Nó không được bộ dịch java kiểm tra trong thời gian biên dịch. Trong một vài tình huống bạn có thể viết các exception của mình thừa kế từ nhánh này. Có một số ngoại lệ trong nhánh này sẵn có trong java mà bạn cần phải để mắt tới nó. Dưới đây là một vài class thuộc nhánh RuntimeException (Tất nhiên không phải là tất cả). Chúng ta thử một vài ví dụ xử lý các ngoại lệ kiểu này: 6.1- NullPointerExceptionĐây là một trong các ngoại lệ thông dụng nhất, và hay gây ra lỗi cho chương trình. Ngoại lệ được ném ra khi bạn gọi phương thức hoặc truy cập vào các trường của một đối tượng chưa được khởi tạo (đối tượng null). NullPointerExceptionDemo.java
Kết quả chạy ví dụ:
Trong thực tế giống việc xử lý các ngoại lệ khác, bạn có thể sử dụng try-catch để bắt ngoại lệ này mà xử lý. Tuy nhiên, đó là cách máy móc, thông thường chúng ta nên kiểm tra để đảm bảo rằng đối tượng là khác null trước khi sử dụng nó. Bạn có thể sửa code trên giống dưới đây, để tránh NullPointerException:
6.2- ArrayIndexOfBoundExceptionĐây là ngoại lệ nó được ném ra khi bạn cố truy cập vào phần tử có chỉ số không hợp lệ trên mảng. Chẳng hạn mảng có 10 phần tử, mà bạn lại truy cập vào phần tử có chỉ số 20. ArrayIndexOfBoundsExceptionDemo.java
Để tránh ArrayIndexOfBoundsException bạn nên kiểm tra mảng thay vì sử dụng try-catch.
|