2013-02-22 51 views
7

aspx.cs में अनचाहे त्रुटि कोड global.asax में Application_Error हैंडलर द्वारा पकड़े जाएंगे।
मैं लॉग इन करने के aspx.cs
में इस तरह के बिना क्रिया त्रुटियों हुआ लेकिन अगर संहिता ही लॉग ऑन भी विफल रहता है और एक अपवाद उत्पन्न Application_Error हैंडलर में कुछ कोड लिखने की है। (आई/ओ या फ़ाइलों प्रणाली की समस्याओं के लिए हो सकता है कारण)
क्या मुझे ऐसा अपवाद फेंकना चाहिए?
यदि मैं इसे बाहर फेंक देता हूं, तो किस घटना को ऐसा अपवाद प्राप्त होना चाहिए?
या अगर मैं "फेंक" वाक्यविन्यास लिखता हूं या नहीं तो इससे कोई फर्क नहीं पड़ता?

क्या मुझे ग्लोबल.एक्सएक्स में एप्लिकेशन_इरर हैंडलर में होने वाला अपवाद फेंकना चाहिए?

protected void Application_Error(object sender, EventArgs e) 
{ 
    try 
    { 
     // my codes to log exception to Database System here.... 
    } 
    catch(Exception) 
    { 
     throw; //Should I write "throw" syntax here ? 
    } 
} 

उत्तर

5

एप्लिकेशन_इरर आखिरी जगह है जहां आप धागे से पहले हुए अपवाद को लॉग कर सकते हैं (जो इस समय आपके अनुरोध की सेवा कर रहा है) निरस्त हो जाता है।

आपको इससे कोई अपवाद फेंकने की आवश्यकता नहीं है क्योंकि यह कार्य समाप्त होने के बाद स्वचालित रूप से ऐसा करेगा।

यहां एक उचित implementation है।

मुझे लगता है कि आपकी सबसे बड़ी चिंता यह है कि यदि तंत्र में विफल होने में विफल रहता है तो क्या करना है। इस मामले में यह आपका लॉगिंग है। यह कंप्यूटरों में एक बड़ा सवाल है, लेकिन मशीनीकरण पर जंजीर असफलता का निर्माण आम तौर पर समय की बर्बादी है क्योंकि अंत में असफल हो सकता है (अपने स्वयं के शोध के लिए साइड सुझाव: सब कुछ यथासंभव स्टेटलेस रखने की कोशिश करें)। आप सबसे अच्छा शर्त है कि एक अंतिम विश्वसनीय लॉगिंग तंत्र है जो आपके अंतिम उपाय के रूप में 99.9% सफल होगा। इस तरह के तंत्र को बनाने के लिए नहीं जा रहा है (और इसे स्वयं करने का अच्छा विचार नहीं है - वैसे भी अपना खुद का लॉगर बनाएं क्योंकि यह सुनिश्चित करने के लिए बहुत सारी युक्तियां हैं कि आपका लॉगिंग पर्याप्त प्रदर्शन करने वाला और गैर-घुसपैठ कर रहा है) लेकिन कुल मिलाकर मैं आपको elmah का उपयोग करने की सलाह दूंगा, यह संभवतः & उपलब्ध सर्वोत्तम लॉगिंग फ्रेमवर्क है, यह आपके उद्देश्य को पूरा करेगा।

बहुत कम त्रुटियों के लिए जो (जो संभवतः वास्तविक जीवन की स्थिति में नहीं होगा) के लिए मैं उन पर नींद नहीं खोऊंगा।

0
  • निम्नलिखित के रूप में कोड नमूने आप प्रवेश करने के बाद Server.GetLastException() फेंक करना चाहते हैं? यह उस अपवाद की प्रकृति और कारण पर निर्भर करता है। मैं इसे विशेष प्लेसहोल्ड या पॉपअप
  • में दिखाऊंगा यदि उस अपवाद को लॉग करने का प्रयास अपवाद फेंक दिया गया है? तो निश्चित रूप से आप इसे