Mục lục:
- Xảy ra lỗi trong điều kiện đặc biệt
- Gặp lỗi cho người gọi
- Java cung cấp hai loại ngoại lệ: đã được kiểm tra (những gì được giám sát bởi JRE) và không được kiểm tra (những gì không được giám sát bởi JRE). Bạn có tùy chọn xử lý một ngoại lệ không được kiểm soát. Tuy nhiên, Java buộc bạn phải xử lý ngoại lệ được kiểm tra. Mã của bạn thậm chí sẽ không biên dịch nếu bạn cố gắng sử dụng một phương pháp có một ngoại lệ được kiểm tra liên kết với nó.
Video: Java Cơ Bản 65 try catch bắt lỗi exception trọng Java 2025
Điều cốt yếu là mã Java của bạn thực hiện mọi nỗ lực để khắc phục sự cố. Tuy nhiên, đôi khi mã của bạn chỉ đơn giản là không có đủ thông tin, tài nguyên, quyền hoặc một số yêu cầu khác để khắc phục sự cố.
Khi điều này xảy ra, mã của bạn sẽ phát hiện lỗi bằng cách sử dụng một đối tượng ngoại lệ. Cụm từ ngoại lệ là thích hợp vì nó phải là ngoại lệ đối với quy tắc chứ không phải là hành động đầu tiên mà ứng dụng thực hiện. Mặc dù vậy, các ứng dụng gặp lỗi đòi hỏi các biện pháp ngoại lệ, và các phần sau đây mô tả cách đối phó với những tình huống này.
Xảy ra lỗi trong điều kiện đặc biệt
Để thực hành, bạn có thể tạo một ứng dụng có thể tạo ra nhiều loại lỗi. Thông thường, bạn sẽ không ném lỗi nếu giá trị nằm trong phạm vi sai - bạn sẽ hiển thị một thông báo trực tiếp cho người dùng. Tuy nhiên, bạn có thể tạo ra một ví dụ chứng tỏ làm thế nào để ném và bắt lỗi từ bên trong một phương pháp.
Gặp lỗi cho người gọi
Nhiều ví dụ mã bạn bắt đầu với chỉ bắt đầu để có được đến điểm mà bạn đang gọi các phương pháp từ main (). Phương thức main () luôn là cấp cao nhất của ứng dụng của bạn. Khi bạn gọi các phương pháp, các phương pháp mà bạn gọi là tạo thêm các cấp.
Ví dụ, một phương thức gọi từ main () sẽ ở cấp thứ hai của ứng dụng của bạn. Nếu phương pháp đó phải gọi một phương pháp khác, phương pháp đó sẽ ở cấp độ thứ ba, v.v … Hầu hết các ứng dụng được tạo thành từ nhiều cấp độ cuộc gọi.
. Gọi cuộc gọi là một danh sách các phương pháp và thứ tự mà chúng được gọi bằng các phương pháp khác. Biết được ngăn xếp cuộc gọi có thể giúp bạn tìm ra nguồn gốc của một lỗi tiềm ẩn khi nó không xảy ra ở mức hiện tại của ứng dụng.Xử lý lỗi là một phần thiết yếu của thực hành lập trình tốt. Nếu bạn muốn các ứng dụng mạnh mẽ mà không liên tục sụp đổ, bạn cần phải cung cấp xử lý lỗi tốt. Tuy nhiên, cố gắng xử lý lỗi khi bạn không có đủ thông tin để xử lý lỗi đó cũng là một vấn đề.
Khi mã của bạn cố gắng sửa lỗi ở mức quá thấp, nó sẽ giấu lỗi từ một mức có thể khắc phục được. Vâng, bạn muốn khắc phục lỗi ở mức thấp nhất có thể, nhưng không phải ở mức chi phí của việc cung cấp sửa chữa có thể thực sự kết thúc giấu một cái gì đó nghiêm trọng hơn.
Khi bạn thấy rằng một mức ứng dụng cụ thể không có các tài nguyên, thông tin, đặc quyền, truy cập của người dùng hoặc một số mục khác cần để xử lý lỗi, sau đó bạn sẽ phát hành lệnh throw với đối tượng ngoại lệ thích hợp.Mức độ trước của ứng dụng sẽ nhận được ngoại lệ và xác định xem nó có thể xử lý nó.
Tuy nhiên, nếu phương thức main () nhận ngoại lệ, thì bạn phải xác định phải làm gì với lỗi, hoặc ứng dụng sẽ sụp đổ. Nó thường được coi là thực hành lập trình xấu để đơn giản là để cho các ứng dụng sụp đổ - bạn cần phải đưa ra một số cách để đối phó với các lỗi mà ứng dụng gặp.
Yêu cầu xử lý lỗi
Java cung cấp hai loại ngoại lệ: đã được kiểm tra (những gì được giám sát bởi JRE) và không được kiểm tra (những gì không được giám sát bởi JRE). Bạn có tùy chọn xử lý một ngoại lệ không được kiểm soát. Tuy nhiên, Java buộc bạn phải xử lý ngoại lệ được kiểm tra. Mã của bạn thậm chí sẽ không biên dịch nếu bạn cố gắng sử dụng một phương pháp có một ngoại lệ được kiểm tra liên kết với nó.
Một ngoại lệ được kiểm tra là một trong những mà JRE được nói theo định nghĩa lớp để giám sát. JRE buộc người sử dụng của lớp cung cấp xử lý ngoại lệ để đảm bảo rằng lớp học thực hiện đáng tin cậy.
Tất cả các loại chi tiết lẻ đều có liên quan với ngoại lệ được kiểm tra và không được kiểm soát. Một cách dễ dàng để biết liệu ngoại lệ có được kiểm tra là biết được lớp cha mẹ. Tất cả ngoại lệ được phân lớp phụ từ các lớp Lỗi hoặc RuntimeException đều không được kiểm tra - mọi ngoại lệ khác đều được kiểm tra.
Thực tiễn tốt nhất là xử lý mọi ngoại lệ trong ứng dụng của bạn và bạn sẽ không phải lo lắng xem một ngoại lệ có được kiểm tra hay không. Một nhà phát triển tuyệt vời luôn luôn xử lý các lỗi tiềm ẩn - đó là điểm mấu chốt.