Tôi có một tuyên bố ném rất nhiều ngoại lệ đã kiểm tra. Tôi có thể thêm tất cả các khối catch cho tất cả chúng như thế này:Có thể bắt tất cả ngoại lệ ngoại trừ thời gian chạy ngoại lệ không?
try {
methodThrowingALotOfDifferentExceptions();
} catch(IOException ex) {
throw new MyCustomInitializationException("Class Resolver could not be initialized.", ex);
} catch(ClassCastException ex) {
throw new MyCustomInitializationException("Class Resolver could not be initialized.", ex);
} catch...
Tôi không thích điều này vì họ được xử lý tất cả cùng một cách như vậy không loại trùng lặp mã và cũng có rất nhiều mã để viết. Thay vào đó có thể bắt Exception
:
try {
methodThrowingALotOfDifferentExceptions();
} catch(Exception ex) {
throw new MyCustomInitializationException("Class Resolver could not be initialized.", ex);
}
Đó sẽ là ok, ngoại trừ tôi muốn tất cả các trường hợp ngoại lệ thời gian chạy được vứt bỏ mà không bị bắt. Có giải pháp nào cho điều này không? Tôi đã nghĩ rằng một số tuyên bố chung thông minh của loại ngoại lệ để được đánh bắt có thể làm các trick (hoặc có thể không).
câu trả lời hay ... +1 – Juvanis
+1 Tuyệt. Không rõ ràng nhất mà tôi từng thấy nhưng có phải là trò lừa không. – drasto