2009-11-26 13 views
11

मैंने अपनी वेब सेवा में सफलतापूर्वक कुछ साबुन अपवाद फेंक दिए। मैं अपवादों को पकड़ना और स्ट्रिंग और क्लाइंटफॉल्टकोड तक पहुंचना चाहता हूं जिसे अपवाद के साथ बुलाया जाता है। यहाँ वेब सेवा में मेरा अपवादों में से एक का एक उदाहरण है:आप वेब सेवा से एक साबुन साबुन अपवाद कैसे पकड़ते हैं?

throw new SoapException("You lose the game.", SoapException.ClientFaultCode); 

मेरे मुवक्किल में, मैं वेब सेवा से विधि है कि एक अपवाद फेंक कर सकते हैं चलाने का प्रयास है, और मैं उसे पकड़ने। समस्या यह है कि मेरे पकड़ ब्लॉक कुछ भी नहीं करते हैं। यह उदाहरण देखें:

try 
{ 
    service.StartGame(); 
} 
catch 
{ 
    // missing code goes here 
} 

मैं स्ट्रिंग और क्लाइंटफॉल्टकोड को कैसे हटा सकता हूं जिसे फेंक दिया गया अपवाद कहा जाता है?

+0

मैं इसके साथ संघर्ष कर रहा हूं, त्रुटि संदेश के साथ एक सरल प्रतिक्रिया वर्ग बनाना सबसे अच्छा विकल्प है। यह प्रश्न और उत्तर देखें: http://stackoverflow.com/q/32058/945875 – Justin

उत्तर

6

SoapException उदाहरण कैच करें। इस तरह आप इसकी जानकारी तक पहुंच सकते हैं:

try { 
    service.StartGame(); 
} catch (SoapException e) { 
    // The variable 'e' can access the exception's information. 
} 
+2

बस यह सुनिश्चित करने के लिए कि Lou इस परिवर्तन के साथ अपना कोड नहीं तोड़ देगा, वह अतिरिक्त ब्लॉक 'कैच (अपवाद ई)' जोड़ सकता है। कभी-कभी यह संभव है कि अपवाद 'SoapException' नहीं है ... उदा .:' OutOfMemoryException', या कनेक्टिविटी समस्या, या थ्रेड abort, आदि –

+0

यह अच्छी तरह से काम करता है। हालांकि, मेरे पास एक सवाल है। मैं कैसे पता लगा सकता हूं कि स्ट्रिंग को वास्तव में क्या कहा जाता है ताकि मैं इसे एक्सेस कर सकूं? उदाहरण के लिए: ई। गेटस्ट्रिंग() या कुछ। इस विशेष उदाहरण के लिए, मैं "आप गेम खो देते हैं" स्ट्रिंग तक पहुंच बनाना चाहते हैं। – Lou

+0

मैं ई.मेजेज को कॉल कर सकता हूं जो एक बहुत लंबा त्रुटि संदेश देता है, लेकिन मुझे केवल स्ट्रिंग संदेश चाहिए। – Lou

9

आप विशिष्ट अपवादों को पकड़ना चाह सकते हैं।

try 
{ 
    service.StartGame(); 
} 
catch(SoapHeaderException) 
{ 
// soap fault in the header e.g. auth failed 
} 
catch(SoapException x) 
{ 
// general soap fault and details in x.Message 
} 
catch(WebException) 
{ 
// e.g. internet is down 
} 
catch(Exception) 
{ 
// handles everything else 
} 
+0

यह लुईस के प्रश्न का उत्तर नहीं देता –

+0

x.Message में अतिरिक्त विवरण –

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