मेरे पास कुछ कोड है जो एक फ़ाइल डाउनलोड करने के लिए यूआरएल से जुड़ता है, और उसके बाद कुछ प्रसंस्करण करता है। हालांकि, कभी-कभी मुझे त्रुटि java.net.SocketException: Connection reset
प्राप्त हो रही है।अपवाद, और कनेक्शन रीसेट होने पर पुनः प्रयास कैसे करें?
मैं इस त्रुटि को प्राप्त करने पर फ़ाइल डाउनलोड करने के लिए पुनः प्रयास करना चाहता हूं, इसे छोड़ने से पहले अधिकतम 3 बार कहें। मैं जानना चाहता हूं कि इसे ढांचा बनाने का सबसे अच्छा तरीका क्या होगा।
क्या निम्न ठीक दिखता है। while
लूप के अंदर try-catch
ब्लॉक को स्थानांतरित करने के लिए स्वीकार्य लगता है, या क्या कोई बेहतर तरीका है?
सभी मदद की बहुत सराहना की जाती है!
while(!connected && retries > 0) {
retries--;
URL downloadUrl;
URLConnection conn;
try {
downloadUrl = new URL(url);
conn = downloadUrl.openConnection();
conn.connect();
connected = true;
// Perform processing on downloaded file here
} catch (IOException e) {
Logger.batchLog(e);
}
}
तो क्या ऐसा कुछ ठीक होगा, या चीजों से निपटने का एक बुरा तरीका होगा? पकड़ो (IOException ई) { Logger.batchLog (ई); अगर (retries == 0) { फेंक ई; } } – QuakerOat
हाँ। यह अच्छा होना चाहिए। या फेंकने के बजाय, आप उपयोगकर्ता को समाप्त और बता सकते हैं कि सर्वर उपलब्ध नहीं है। हालांकि आप इसे संभालते हैं, आपको अपवाद नहीं खाना चाहिए जैसे कुछ भी नहीं हुआ। जो मुझे नहीं लगता कि आपको अभी समस्या है। साथ ही, आप केवल java.net.SocketException को पकड़ना चाहते हैं और सभी IOExceptions नहीं, क्योंकि यह एकमात्र चीज है जिसे आप जानते हैं (या चाहते हैं) को संभालने के लिए। – shoebox639