Khi sử dụng java.net.Socket.connect()
, cả kết nối bị từ chối và kết quả thời gian chờ là ConnectException
.Phân biệt giữa kết nối bị từ chối và kết nối hết thời gian
java.net.ConnectException: Connection timed out: connect
java.net.ConnectException: Connection refused: connect
Làm cách nào để phân biệt một cách an toàn giữa hai loại này? Chắc chắn phân tích cú pháp thông báo lỗi thực hiện công việc. Nhưng khi thông báo thay đổi trong bản phát hành Java trong tương lai, tôi không may mắn.
Ảnh lớn hơn: Tôi đang viết ứng dụng khách dịch vụ web sử dụng JAX-WS với triển khai Metro. Khi một cuộc gọi dịch vụ web không thành công, tôi muốn báo cáo lý do cho sự thất bại rõ ràng để vấn đề có thể được giải quyết nhanh chóng.
Có một dự phòng là một giải pháp có thể chấp nhận được. –
Tôi thích câu trả lời này, nhưng vẫn duy trì đề xuất cũ của tôi: trừu tượng hóa nó đi! Điều cuối cùng bạn muốn là một loạt các kiểm tra không phù hợp và lặp đi lặp lại trên một giao diện mà bạn không thể dựa vào. Tạo một giao diện có ý nghĩa với bạn và trừu tượng hóa các chi tiết. Bạn không muốn chỉnh sửa một tá tệp nếu có bất cứ điều gì thay đổi. – riwalk