2012-04-27 15 views
7

से अधिक मुझे पता है अतः में सवालों के बहुत देखते हैं के बारे में ASP.NET MVC में से निपटने त्रुटि हूँ।लाभ Application_Error

मैं देख रहा हूँ, ज्यादातर लोगों को तीन तरीकों से चीजों को हासिल करने की कोशिश कर रहे हैं:

  1. एक BaseController बनाएँ और OnException विधि

  2. [HandleError] या कस्टम अपवाद फ़िल्टर का उपयोग करना जरुरी है।

  3. Application_Error global.asax.cs

पहले दो तरीके सभी अपवादों को संभाल सकते हैं और वे केवल करना है कि कार्रवाई के तरीकों/फ़िल्टर द्वारा उठाया जाता है में घटना है, तो जाहिर है तीसरे एक है एक वैश्विक अपवाद हैंडलर के लिए सबसे अच्छा तरीका होने जा रहा है।

मेरा सवाल है कि मुझे [HandleError] दृष्टिकोण के लिए क्यों जाना चाहिए? इससे क्या फायदे हैं कि मैं Application_Error से नहीं प्राप्त कर सकता हूं?

अंत में, क्या मैं customErrors अनुभाग को एमवीसी अनुप्रयोग में गंभीर रूप से लेना चाहता हूं?

नोट: मेरी आवश्यकता सामान्य है। जब भी कोई अपवाद होता है, तो उसे लॉग करें और एक कस्टम त्रुटि पृष्ठ लौटाएं। कस्टम त्रुटि पृष्ठ बदल सकता है स्थिति कोड पर निर्भर करता है।

उत्तर

8

सबसे स्पष्ट यह है कि [HandleError] आपको विभिन्न नियंत्रकों और कार्यों में त्रुटियों को अलग-अलग संभाल करने की अनुमति देता है। आपके Application_Error हैंडलर में किसी प्रकार के स्विच स्टेटमेंट की तुलना में यह अधिक सुंदर है।

एक और लाभ यह है कि [HandleError] अभी भी नियंत्रक तक पहुंच गया है और इसके साथ आने वाली सभी एमवीसी भलाई है, इसलिए आप अभी भी View वापस कर सकते हैं या किसी अन्य क्रिया को कॉल कर सकते हैं। एक बार जब आप Application_Error पर आते हैं, तो आप ControllerContext खो चुके हैं और रीडायरेक्ट को छोड़कर आपके पास वास्तव में आपके पास विकल्प नहीं हैं।

+1

मुझे कोई कारण नहीं दिख रहा है कि क्यों कोई अलग नियंत्रकों और कार्यों में अलग-अलग त्रुटियों को संभालना चाहता है। ठीक है, अगर मैं उस तर्क को [हैंडलरर] में करता हूं तो फिर मैं इसे वैश्विक.एक्सएक्स में करना चाहता हूं? – VJAI

+1

मोबाइल के लिए अलग त्रुटि पेज? उपयोगकर्ताओं के लिए व्यक्तिगत त्रुटि पृष्ठ? AJAX अनुरोधों के लिए एचटीएमएल खंड? टूटी छवि लिंक के लिए कस्टम त्रुटि छवि? कुछ नियंत्रकों के लिए वर्जित त्रुटि पृष्ठों का उपयोग करें? अलग-अलग त्रुटियों को संभालने के कारणों के बारे में सोचना मुश्किल नहीं है। – bhamlin

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