2011-06-20 42 views
5

Tôi nhầm lẫn với việc đặt tên ngoại lệ thời gian chạy của java. Những ngoại lệ đã kiểm tra, như SQLexception, cũng xảy ra trong quá trình thực hiện chương trình. Tại sao chỉ những người không được kiểm soát được gọi là ngoại lệ thời gian chạy? Có lẽ tôi đã hiểu nhầm về "thời gian chạy".ngoại lệ đã kiểm tra có xảy ra vào thời gian chạy không?

Cảm ơn bạn đã có bất kỳ lời khuyên nào.

Trả lời

5

Tôi có thể hiểu nhầm lẫn của bạn. Tất cả các trường hợp ngoại lệ xảy ra khi chạy!

Lý do duy nhất tôi có thể đưa ra để đặt tên cho lớp theo cách đó, là nó làm rõ rằng nó là một ngoại lệ mà không phải được xử lý tại thời gian biên dịch.

Trái ngược với tất cả cái gọi là ngoại lệ "kiểm tra" khác, RuntimeExceptions không yêu cầu các lập trình viên để tuyên bố trừ được ném bằng một điều khoản throws.

2

RuntimeException là một phân lớp của java.lang.Exception. RunTimeExceptions hầu như luôn là kết quả của lỗi lập trình hoặc/và bất biến không được đáp ứng (Không được thông qua khi chúng không được), vì vậy bạn không phải bắt chúng như java.lang.Exception (được kiểm tra Ngoại lệ). Bạn không bắt được chúng vì có rất ít hệ thống Run Time có thể làm để phục hồi.

Tôi nghĩ rằng thời gian chạy cụm từ chỉ có nghĩa là chúng xảy ra khi chương trình đang chạy (rõ ràng !!) và chủ yếu là trình biên dịch không buộc kiểm tra được tích hợp vào mã như Kiểm tra ngoại lệ. Tôi nghĩ đây là một ví dụ về việc khó đặt tên cho một lớp học một cách thích hợp, ví dụ: Tôi đoán họ có thể có ngoại lệ không được kiểm tra theo mặc định và được gọi là ngoại lệ. Sau đó phân lớp nó để cung cấp CheckedException - mọi người gọi java.lang.Exception là một ngoại lệ được kiểm tra, nhưng nó không rõ ràng từ tên lớp. Nhưng họ đã không và chúng tôi có:

> java.lang.Exception is referred to as "Checked Exception" 
> java.lang.RuntimeException is referred to as "Unchecked Exception" 
Các vấn đề liên quan