2013-02-26 79 views
5

Application_Error में कोई त्रुटि संभालते समय, उन दोनों में से किस का उपयोग करना चाहिए?Application_Error - GetLastError() या GetLastError()। GetBaseException()

मुझे दोनों के लिए कई उदाहरण मिल रहे हैं, लेकिन यह वास्तव में स्पष्ट नहीं है कि कोई दूसरे से बेहतर है या नहीं। क्या ऐसे मामले हैं जहां केवल एक ही सही त्रुटि दिखाएगा?

इसके अलावा, मैं इस मामले को शक है, लेकिन आवेदन MVC 4.

उत्तर

6

यह वास्तव में क्या आप की जरूरत है पर निर्भर करता है का उपयोग कर रहा है।

Exception.GetBaseException की documenation से:

जब एक व्युत्पन्न वर्ग में अधिरोहित, अपवाद एक या अधिक बाद में अपवाद की जड़ है कि देता है।

Application_Error, ऊपरी स्तर पर अपवाद संभालती है, हो सकता है कई अपवाद संचालन तंत्र के बाद इसलिए यदि अपवाद इस तरह फेंक दिया जाता है:

try { 
    //Lots of code, method calls, etc... 
    try { 
     throw new FooException("Foo"); 
    } catch(FooException fe) { 
     throw new BarException("Bar", fe); 
    } 
}catch(BarException be) { 
    throw new FooBarException("FooBar", be); 
} 

तो GetLastError आप FooBarException मिल जाएगा, जबकि GetLastError().GetBaseException() आप FooException मिल जाएगा। तो पूर्व वास्तविक असंतुलित अपवाद देता है जबकि उत्तरार्द्ध मूल कारण देता है।

मुझे लगता है कि फू, बार और FooBar अपवाद कक्षाएं GetLastError या InnerException

+0

अच्छा स्पष्टीकरण ओवरराइड नहीं करें। मैं अनचाहे अपवाद चाहता हूं, इसलिए 'GetLastError()' यह है। – Stijn