2014-06-25 5 views
21

मैं एक एंड्रॉइड ऐप में एक http POST अनुरोध करने की कोशिश कर रहा हूं, लेकिन कोई फर्क नहीं पड़ता कि मैं अनुरोध के लिए यूआरएल का उपयोग करता हूं, ग्रहण एक विकृत यूआरएल अपवाद को बढ़ाता रहता है। मैंने एंड्रॉइड ट्यूटोरियल में से एक से कोड की एक पंक्ति की कोशिश की है:जावा मालफॉर्म यूआरएल अपवाद

URL url = new URL("https://wikipedia.org"); 

और यहां तक ​​कि त्रुटि को भी ट्रिगर करता है। क्या कोई कारण है कि ग्रहण किसी भी यूआरएल के लिए इस त्रुटि को उठाता है जिसे मैं बनाने की कोशिश करता हूं?

+0

अपना कोड और लॉगकैट पोस्ट करें। – Sufian

+1

मेरे लिए ठीक काम करता है। स्टैक ट्रेस पोस्ट करें। –

+0

और कृपया कोड को अपने प्रश्न में रखें, न कि टिप्पणियों में। – Sufian

उत्तर

53

यह अपवाद नहीं उठा रहा है, यह शिकायत कर रहा है कि आपने the possibility that it might को संभाला नहीं है, भले ही यह नहीं होगा, क्योंकि इस मामले में यूआरएल खराब नहीं है। (जावा के डिजाइनरों इस अवधारणा सोचा, "जांचे हुए अपवादों" एक अच्छा विचार था, हालांकि व्यवहार it hasn't worked well. में)

, यह चुप रहो throws MalformedURLException, या उसके सुपर क्लास throws IOException जोड़ने के लिए, विधि घोषणा करने के लिए करने के लिए। उदाहरण के लिए:

public void myMethod() { 
    try { 
     URL url = new URL("https://wikipedia.org/"); 
     ... 
    } catch (IOException e) { 
     throw new RuntimeException(e); 
    } 
} 

जावा 8 IOException रों rethrowing जब आप अन्यथा उन्हें संभाल नहीं कर सकते हैं के लिए UncheckedIOException वर्ग कहा:

public void myMethod() throws IOException { 
    URL url = new URL("https://wikipedia.org/"); 
    ... 
} 

वैकल्पिक रूप से, पकड़ और एक अनियंत्रित अपवाद रूप में कष्टप्रद अपवाद rethrow। पहले जावा संस्करणों में, RuntimeException का उपयोग करें।

+4

चेक अपवाद एक बुरा विचार नहीं है। 'MalformedURLException' के मामले में उनका उपयोग कैसे किया जा रहा है। 'MalformedURLException' एक अपवाद अपवाद नहीं होना चाहिए, लेकिन जावा टीम ने इसे किसी कारण से बनाया है जिसे मुझे अभी समझ में नहीं आया है। – AxiomaticNexus

+1

** अनचाहे अपवाद ** का मतलब है कि अपवाद की आवश्यकता ** ** –

+0

asynch doInBackground में नया यूआरएल उपयोग कर रहा था ... केवल एक ही तरीका मैं त्रुटि के आसपास हो सकता था। धन्यवाद ! – JayD

संबंधित मुद्दे