tốt hơn là ngăn ngoại lệ với điều khoản bảo vệ hoặc bắt ngoại lệ?
Trong trường hợp ngoại lệ "có tiêu đề" như chỉ mục nằm ngoài phạm vi, luôn là tên cũ.
Trong trường hợp ngoại lệ "ngoại sinh", luôn là ngoại lệ.
Ưu và nhược điểm của hai phương pháp?
Chỉ có nhược điểm của trường hợp sau trong trường hợp ngoại lệ có đầu mối. Chúng là:
- Ngoại lệ là cực kỳ đắt tiền so với thử nghiệm.
- Trường hợp ngoại lệ được thiết kế để mô hình đặc biệt hiếm hoi tình huống luồng điều khiển; nếu có khả năng truy cập vào một chỉ mục nằm ngoài phạm vi là bình thường thì không viết xử lý ngoại lệ.
- Trường hợp ngoại lệ được báo cáo là ngoại lệ "cơ hội đầu tiên" đối với người nghe ngay cả khi ngoại lệ được xử lý. Nhiều hệ thống - ví dụ: - lắng nghe các ngoại lệ cơ hội đầu tiên, ghi lại tất cả các trường hợp đó và xử lý các thành phần tạo ra nhiều trường hợp như lỗi, vì chúng là. (Tôi đã từng giới thiệu một ngoại lệ cơ hội đầu tiên có chủ ý trong một đường dẫn mã phổ biến trong ASP và một ngày sau đó cậu bé đã nghe về nó. Các thử nghiệm hệ thống con bị lỗi phát điên.)
- Có một số ngoại lệ mà tôi gọi là ngoại lệ "có tiêu đề" - không có tham số, chỉ mục ngoài phạm vi, v.v. - vì chúng rất dễ tránh và cho biết lỗi nên rõ ràng nguy hiểm đến mức chúng luôn luôn được coi là lỗi nghiêm trọng và không bao giờ được xử lý (trừ khi "trình xử lý" đang ghi nhật ký chúng trước khi tắt quá trình.) Không xử lý lỗi, xóa lỗi.
Cuối cùng, bạn nên đọc bài viết của tôi về chủ đề này.
http://ericlippert.com/2008/09/10/vexing-exceptions/
Nguồn
2013-05-10 14:49:22
Nếu bạn có thể tránh ngoại lệ, điều đó tốt hơn vì ngoại lệ có phí. –
Nếu bạn đang mong đợi một cái gì đó ở chỉ số 3, đó là một lỗi ** ** nếu bạn không có nó ở đó..nó tốt hơn để đóng ứng dụng của bạn và đăng nhập lỗi đó thay vì bắt ngoại lệ hoặc cố gắng giải quyết nó .. – Anirudha
@Anirudh: Điều gì sẽ xảy ra nếu bạn phân tích cú pháp một tệp được cho là định dạng đúng và các mục sẽ được đặt vào và tìm nạp từ bộ sưu tập dựa trên nội dung trong tệp? Nếu hành động khôi phục chỉ muốn trong trường hợp tệp không hợp lệ là có quy tắc 'ParseFile' ném ngoại lệ cho biết tệp không thể tải được, hãy thử các thao tác khác nhau và bắt bất kỳ ngoại lệ nào xảy ra sẽ có vẻ sạch hơn là có mệnh đề bảo vệ mọi nơi có mục đích duy nhất là ném một ngoại lệ nếu có điều gì đó sai. – supercat