c# - Why is code in a try block separate from the rest of a method? -


मेरी समस्या कुछ इस तरह से हो जाती है:

  HttpWebRequest अनुरोध; {अनुरोध = {HttpWebRequest} WebRequest.Create (url) का प्रयास करें; } पकड़ (UriFormatException) {statusLabel.Text = "आपके द्वारा दर्ज पता गलत था, कृपया इसे ठीक करें।"; StatusLabel.ForeColor = Color.Red; } HttpWebResponse प्रतिक्रिया = (HttpWebResponse) request.GetResponse ();  

इस त्रुटि से मुझे यह मिलेगा कि अनुरोध को एक मूल्य नहीं दिया गया है। जाहिर है यह इसलिए है क्योंकि अनुरोध के मान को कोशिश ब्लॉक में दिया गया है।

इसका कारण मुझे भ्रमित करता है क्योंकि अन्य भाषाओं में मैंने इसका उपयोग किया है, try / code> ब्लॉक में कोड

क्या मैं इस गलत तरीके से जा रहा हूं? क्या मैं अलग तरीके से अलग (मैं इसके लिए शब्द भूल सकता हूँ, संभवत: इनकैप्सली?) बाकी के कोड से। WebRequest किसी एक को फेंकने के बाद अपवाद मानने के बाद क्या मुझे कोशिश ब्लॉक में कोड डुप्लिकेट करना चाहिए?

आप त्रुटि का गलतफहमी कर रहे हैं।

अनुरोध चर सभी कोड के दायरे में है। हालांकि, बाहर की कोशिश करें ब्लॉक के बाहर, यह मान की गारंटी नहीं है, और सी # संकलक आपको एक चर का उपयोग करने की अनुमति नहीं देगा, जब तक कि यह निश्चित न हो कि वेरिएबल को पहले से ही असाइन किया गया है।

विशेष रूप से, यदि WebRequest.Create एक अपवाद फेंकता है, अनुरोध को असाइन नहीं किया जाएगा।

आप उसे निर्दिष्ट करके ठीक कर सकते हैं कैच ब्लॉक के बाहर एक मान, इस तरह:

  एचटीटीपी वेबबेट अनुरोध = शून्य;  

वैसे, आपको यहां पकड़ ब्लॉक का उपयोग नहीं करना चाहिए। इसके बजाय, आपको कॉल करना चाहिए।


Comments

Popular posts from this blog

.net - C# List<T>.Find(x=>x.Rectangle.Contains(Point)) FAIL -

iphone - Smoothing a rounded stroke in Core Graphics -

Best practice for URL redirection in ASP.NET web application -