Tôi sẽ hướng câu trả lời của mình nhiều hơn đến những gì xảy ra sau một ngoại lệ: nó tốt cho cái gì và phần mềm nên ứng xử như thế nào, người dùng của bạn nên làm gì với ngoại lệ đó? Một kỹ thuật tuyệt vời tôi đã bắt đầu trong sự nghiệp của mình là luôn báo cáo các vấn đề và lỗi trong 3 phần: bối cảnh, vấn đề & giải pháp. Việc sử dụng dendsline này thay đổi rất nhiều việc xử lý lỗi và làm cho phần mềm tốt hơn rất nhiều cho các nhà khai thác sử dụng.
Dưới đây là một vài ví dụ.
Context: Saving connection pooling configuration changes to disk.
Problem: Write permission denied on file '/xxx/yyy'.
Solution: Grant write permission to the file.
Trong trường hợp này, người vận hành biết chính xác phải làm gì và tập tin nào phải bị ảnh hưởng. Họ cũng biết rằng những thay đổi tổng hợp kết nối đã không thực hiện và nên được lặp lại.
Context: Sending email to 'abc@xyz.com' regarding 'Blah'.
Problem: SMTP connection refused by server 'mail.xyz.com'.
Solution: Contact the mail server administrator to report a service problem. The email will be sent later. You may want to tell 'abc@xyz.com' about this problem.
Tôi viết các hệ thống phía máy chủ và các nhà khai thác của tôi nói chung là những người am hiểu công nghệ hỗ trợ dòng đầu tiên. Tôi sẽ viết các thông báo khác nhau cho phần mềm máy tính để bàn có đối tượng khác nhau nhưng bao gồm cùng một thông tin.
Một số điều tuyệt vời xảy ra nếu một người sử dụng kỹ thuật này. Nhà phát triển phần mềm thường thích hợp nhất để biết cách giải quyết các vấn đề trong mã của họ, do đó, giải pháp mã hóa theo cách này khi bạn viết mã có lợi cho những người dùng cuối gặp bất lợi khi tìm giải pháp vì họ thường thiếu thông tin về chính xác những gì phần mềm đã làm. Bất cứ ai đã từng đọc một thông báo lỗi của Oracle đều biết ý tôi là gì.
Điều tuyệt vời thứ hai xuất hiện trong đầu bạn là khi bạn thấy mình đang cố gắng mô tả một giải pháp trong trường hợp ngoại lệ của bạn và bạn đang viết "Kiểm tra X và nếu A thì B khác C". Đây là một dấu hiệu rất rõ ràng và rõ ràng rằng ngoại lệ của bạn đang được kiểm tra sai vị trí. Bạn lập trình viên có khả năng so sánh mọi thứ trong mã để các câu lệnh "nếu" nên được chạy trong mã, tại sao lại liên quan đến người dùng trong một cái gì đó có thể được tự động hóa? Có thể từ mã sâu hơn và ai đó đã thực hiện điều lười biếng và ném IOException từ bất kỳ phương thức nào và bắt lỗi tiềm ẩn từ tất cả chúng trong một khối mã gọi không thể mô tả đầy đủ những gì đã sai, cụ thể là gìbối cảnh là và làm thế nào để khắc phục nó. Điều này khuyến khích bạn viết các lỗi hạt nhỏ hơn, bắt và xử lý chúng ở đúng vị trí trong mã của bạn để bạn có thể nói rõ các bước mà người vận hành nên thực hiện.
Tại một công ty, chúng tôi đã có các nhà khai thác xuất sắc hàng đầu, những người hiểu rõ về phần mềm và giữ "cuốn sách chạy" của riêng họ, điều đó đã làm tăng các giải pháp báo cáo và đề xuất lỗi của chúng tôi. Để nhận ra điều này, phần mềm đã bắt đầu bao gồm các liên kết wiki đến sách chạy trong các trường hợp ngoại lệ để có giải thích cơ bản cũng như liên kết đến các cuộc thảo luận và quan sát nâng cao hơn của các nhà khai thác theo thời gian.
Nếu bạn đã có dendsline để thử kỹ thuật này, nó sẽ trở nên rõ ràng hơn nhiều về những gì bạn nên đặt tên ngoại lệ của mình trong mã khi tạo riêng của bạn. NonRecoverableConfigurationReadFailedException trở thành một chút tốc ký cho những gì bạn sắp mô tả đầy đủ hơn cho nhà điều hành. Tôi thích được dài dòng và tôi nghĩ rằng sẽ dễ dàng hơn cho nhà phát triển tiếp theo chạm vào mã của tôi để giải thích.