Chỉ cần một nhận xét dài về câu trả lời của bộ công cụ.
Lý do ngoại lệ Kiểm tra là một vấn đề là họ cuối cùng dẫn đến mã như thế này:
try {
Something that throws an exception
} catch (Exception e) {}
Đây là trường hợp xấu nhất. Trước hết, họ không đăng nhập mà họ đang bắt ngoại lệ. Điều này xảy ra rất nhiều, và gần như bị lừa bởi các ngoại lệ được kiểm tra rất ngu ngốc như trên Thread.sleep(), nó ném InterruptedException rằng PHẢI bị bắt, nhưng 99% thời gian bạn không thể quan tâm ít hơn nếu bạn có một hay không .
Trong trường hợp trên, điều này được kết hợp bởi thực tế là mọi người có xu hướng chỉ bắt "Ngoại lệ" nếu có nhiều hơn một lần ném. Điều đó có nghĩa rằng ngay cả khi một ngoại lệ không được kiểm soát quan trọng được ném ra, nó sẽ bị bắt và bỏ qua khiến nó hầu như không thể tìm ra vấn đề.
Nhiều hơn một lần tôi đã tham gia vào các đội phải chi tiêu khoảng một tháng để cố gắng theo dõi các lỗi bị ẩn theo cách này.
Đó là một khái niệm tốt sẽ trở nên khủng khiếp khi bạn thêm vào thực tế là con người là những người phải thực hiện nó một cách có trách nhiệm.
Nguồn
2009-02-09 18:36:15
Đó là mô tả không đúng về sự khác biệt giữa thời gian chạy/ngoại lệ được kiểm tra. Đó là ** không phải ở tất cả ** sự khác biệt giữa chúng. Có 'RuntimeException' mà bạn * nên * bắt, và có những ngoại lệ được kiểm tra mà bạn có thể tránh bằng cách thực hiện kiểm tra bổ sung trước khi gọi phương thức. – Aaron
Ex1: 'NumberFormatException' là một thứ mà bạn thường nên nắm bắt. Việc nắm bắt 'NumberFormatException' tốt hơn là cố gắng tự kiểm tra định dạng của một chuỗi' String' trước khi chuyển đổi nó thành một số, khi đó bạn có thể * vẫn * kết thúc bằng 'NumberFormatException' mà bây giờ bạn không bắt được. – Aaron
Ex2: 'IOException' là một trong số đó được đưa ra khắp nơi bởi nhiều API. Đây có lẽ là ngoại lệ bị bắt nhiều nhất đối với tôi và ngoại lệ bị bắt nhiều nhất mà tôi thấy trong mã của người khác. Có rất nhiều nơi mà bạn buộc phải bắt 'IOException' hoặc các lớp con của nó, nơi nó sẽ không bao giờ bị ném vào một số ngữ cảnh sử dụng API để ném nó. – Aaron