Tôi có một số câu hỏi liên quan đến xử lý ngoại lệ trong Java. Tôi đọc một chút về nó và có một số hướng dẫn mâu thuẫn.Thực hành tốt cho các ngoại lệ Java xử lý
Best Practices for Exception Handling
Hãy cùng xem qua bài viết đề cập:
Nó nói rằng một thường nên tránh sử dụng ngoại lệ kiểm tra nếu "mã khách hàng không thể làm bất cứ điều gì". Nhưng nó có ý nghĩa gì? Hiển thị thông báo lỗi trong GUI đủ lý do cho bong bóng lên kiểm tra ngoại lệ? Nhưng nó sẽ buộc lập trình GUI nhớ để bắt RuntimeExceptions và con cháu của họ để hiển thị thông tin lỗi tiềm năng.
Chế độ xem thứ hai được trình bày trong bài viết này là người ta nên tránh phát minh ra các lớp ngoại lệ của riêng trừ khi tôi muốn thực hiện một số trường/phương thức hải quan trong đó. Tôi thường không đồng ý với điều này, thực hành của tôi ngày hôm nay hoàn toàn ngược lại: tôi đã bao gồm các ngoại lệ trong cấu trúc ngoại lệ của mình để phản ánh các mục tiêu được nhận ra bởi các lớp tôi viết, ngay cả khi chúng chỉ mở rộng Ngoại lệ mà không thêm bất kỳ phương thức mới nào. Tôi nghĩ rằng nó giúp để xử lý chúng linh hoạt hơn trong các lớp cao hơn khi ném cộng với nó nói chung là rõ ràng hơn và dễ hiểu cho lập trình viên sẽ sử dụng các lớp này.
Tôi đã triển khai một số mã hôm nay 'cách mới' được trình bày trong bài viết đưa ra RuntimeException ở đây và ở đó, sau đó tôi để Sonar phân tích nó. Để làm tôi bối rối hơn nữa, Sonar đã đánh dấu RuntimeExceptions của tôi là các lỗi chính với một thông báo như "Tránh ném các loại ngoại lệ của root, wrap'em trong các kiểu của riêng bạn".
Vì vậy, có vẻ khá gây tranh cãi, bạn nghĩ sao?
Tôi cũng nghe nói từ một trong những khách hàng tiềm năng ngày nay chỉ gói các ngoại lệ là xấu, 'bởi vì nó là một hoạt động thực sự tốn kém cho JVM'. Đối với tôi, ở phía bên kia ném SQLExceptions hoặc IOExceptions ở khắp mọi nơi trông giống như một chút phá vỡ đóng gói ..
Vậy thái độ chung của bạn với những câu hỏi tôi đã trình bày ở đây là gì?
Khi quấn ngoại lệ trong các loại của riêng tôi, khi tôi không nên làm điều này?
Đâu là điểm của 'khách hàng không thể làm gì về điều này, hãy ném ngoại lệ thời gian chạy? '
Điều gì về vấn đề hiệu suất?
Thật không may điều này không mang tính xây dựng cho SO theo Câu hỏi thường gặp. Bạn có thể muốn thử programmers.stackexchange.com - được nói, mua 'Java hiệu quả' bởi Joshua Bloch. Bất cứ ai nghiêm túc về Java nên sở hữu một bản sao. –
Tôi chắc chắn sẽ chuyển nó sang Programmers.SE nếu tôi có thể. Đã có thời gian khi chúng ta có thể làm điều đó? Hay tôi chỉ luôn mong chờ thời gian đó? –
https://today.java.net/pub/a/today/2006/04/06/exception-handling-antipatterns.html là một danh sách tốt về thực hành tốt – bla