Giống như một thử nghiệm, tôi quyết định bật điểm ngắt sau trong trình gỡ lỗi Eclipse: Throwable [Include Subclasses]: caught and uncaught
. Sau đó, tôi cho phép mã của tôi (đang chạy "tốt" theo như tôi biết) chạy dưới trình gỡ lỗi và đã ngạc nhiên khi thấy hàng tá trường hợp ngoại lệ bị ném và bị bắt (trước đây chưa biết đến tôi) bằng mã thư viện chuẩn của J2SE khi mã của tôi chạy bình thường cho tất cả những gì tôi biết.Mã thư viện java có bình thường để ném và bắt rất nhiều ngoại lệ trong quá trình xử lý "bình thường" không?
Ví dụ: đây chỉ là một số chức năng của khung công tác Java mà tôi đã tìm thấy khi ném các ngoại lệ: URLClassLoader.findClass
, FileDirContext.lookup
và WebappClassLoader.findClassInternal
.
Đây có phải là hành vi bình thường đối với một ứng dụng Java không? Đây có phải là thứ tôi nên xem xét không? Mã của tôi dường như chạy tốt như xa như tôi biết.
Tất cả âm thanh hợp lý: ngoại lệ xảy ra khi cơ chế truy xuất chính (hoặc * n * -ary nói chung) không thành công và có thể được xử lý bằng cách thử cơ chế thứ cấp (hoặc (* n + 1 *) - ary nói chung) . –
Bạn nên làm theo các đặc điểm kỹ thuật (tài liệu) trên các phương pháp hơn là lo lắng về những gì họ có thể làm trong nội bộ. Đó là loại nghiên cứu chỉ cần thiết nếu việc thực hiện không hoạt động như mong đợi theo đặc điểm kỹ thuật. –
Đó là một câu hỏi rất hay, và tôi đoán câu trả lời phụ thuộc vào các ngoại lệ cụ thể đang được ném ra. Nói chung, như một quy tắc ngón tay cái, đó là một thực tế tồi để thiết kế mã của bạn dựa vào việc bắt ngoại lệ vì các trường hợp ngoại lệ rất tốn kém. Đọc tốt: http://www.ibm.com/developerworks/java/library/j-jtp05254/index.html – alfasin