Đồng ý với Norman.
Nói chung, tôi cố gắng nắm bắt và xử lý tất cả ngoại lệ của ứng dụng và trả về các thư thích hợp chứa lỗi.
Ví dụ: trong máy chủ HTTP, tôi sẽ trả lại 404 nếu không tìm thấy tệp.
Tôi cũng thêm chức năng sau trong trình xử lý của mình cho bất kỳ ngoại lệ nào mà tôi không nắm bắt - mà theo lý thuyết chỉ nên là lỗi loại mạng. Tôi có xu hướng thực hiện một cách tiếp cận đen trắng với những ngoại lệ này và giả định rằng tôi không thể phục hồi. Do đó, tôi đóng kênh. Nó sẽ tùy thuộc vào khách hàng để thử lại.
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
try {
_logger.error(e.getCause(), "ERROR: Unhandled exception: " + e.getCause().getMessage()
+ ". Closing channel " + ctx.getChannel().getId());
e.getChannel().close();
} catch (Exception ex) {
_logger.debug(ex, "ERROR trying to close socket because we got an unhandled exception");
}
}
Hy vọng điều này sẽ hữu ích.