मेरे पास इस प्रकार का प्रारूपत्रुटि हैंडलिंग क्या मुझे अपवाद फेंकना चाहिए? या स्रोत पर संभाल लें?
एएसपीनेट एमवीसी व्यू -> सेवा परत -> रिपोजिटरी है।
तो दृश्य सेवा परत जो उस में व्यापार/मान्यता तर्क है जो बारी-बारी भंडार कॉल कहते हैं।
अब मेरी सेवा परत विधि आम तौर पर एक bool वापसी प्रकार इतना है कि मैं सच लौटा सकते हैं या डेटाबेस क्वेरी अच्छा के माध्यम से चला गया है। या अगर यह असफल रहा। फिर उपयोगकर्ता को एक सामान्य संदेश दिखाया जाता है।
मैं निश्चित रूप से elmah के साथ त्रुटि लॉग इन करूंगा। हालांकि मुझे यकीन नहीं है कि मुझे इस बिंदु पर कैसे जाना चाहिए।
अभी इसी तरह मेरी रिपोजिटरी में अद्यतन, निर्माण, हटाने के लिए शून्य वापसी प्रकार हैं।
तो कहें कि क्या कोई अपडेट विफल रहता है, क्या मुझे अपने भंडार में कोशिश/पकड़ना चाहिए जो त्रुटि को फेंकता है, फिर मेरी सेवा परत इसे पकड़ती है और एल्मा सिग्नलिंग करती है और झूठी वापसी करती है?
या मेरे पास इन रिपोजिटरी विधियों को "बूल" वापस करना चाहिए, रिपॉजिटरी में त्रुटि को आज़माएं/पकड़ें और फिर सेवा परत पर "सत्य" या "झूठी" लौटाएं जो बदले में "सत्य" या "झूठी" देखने के लिए?
अपवाद संचालन अभी भी मुझे confuses त्रुटियों जब जब त्रुटि को पकड़ने के लिए फेंक और कैसे संभाल और।
यह तकनीक निम्न समस्याओं को प्रस्तुत करती है: 1) किसी भी समय निम्न स्तर की असेंबली अधिक चेक, या अधिक अपवाद प्रस्तुत करती है, इसके ऊपर की सभी परतें अपवाद को सही तरीके से लपेटने के लिए बदलनी चाहिए - अन्यथा रैपिंग सिर्फ एक गौरवशाली पकड़ बन जाती है और सभी जीती बहुत अधिक अर्थ नहीं है 2) अलग-अलग त्रुटियों के लिए अलग-अलग अपवाद प्रकारों का उपयोग करने से त्रुटि प्रबंधन की निष्ठा बढ़ जाती है और यदि हमारे पास केवल एक अपवाद है, जहां भी आप इसे संभालते हैं, तो आपको अपना आवरण तर्क लिखना होगा (यदि LogicException किसी चीज़ के कारण है हैंडल से अन्यथा इसे जाने दें)। अन्य भी हो सकते हैं ... –
1) बाव। आपको इन नए अपवादों को किसी भी तरह पकड़ना होगा, तो यूआई के बजाए निचले स्तर पर क्यों रोना चाहिए? 2) यदि आप बहुत सी चीजें करते हैं तो आप संभवतः यूआई स्तर पर अपवाद प्रकारों को पकड़ सकते हैं। यह अविश्वसनीय रूप से कष्टप्रद है और UI पर तर्क के साथ आपका कोड लिटर करता है जो वास्तव में वहां नहीं होना चाहिए। दोबारा, आप मूल अपवाद को लपेट रहे हैं, ताकि आप अभी भी एक ही प्रकार को पकड़ सकें और बिना किसी कैच के अपने सभी निष्ठा आवश्यकताओं के लिए इनरएक्सप्शन की जांच कर सकें। 3) अन्य रिबूट हो सकते हैं लेकिन मैं उन्हें सूचीबद्ध करने के लिए बहुत आलसी हूं। – Will
@ चार्ल्स प्रकाश दशरी: विफलता के प्रकार से प्रतिष्ठित अपवाद प्रकार वास्तव में उपयोगी नहीं है। सिस्टम राज्य द्वारा उन्हें प्रतिष्ठित करने के लिए और भी उपयोगी क्या है। उदाहरण के लिए, यदि किसी दिनचर्या को डेटाबेस में रिकॉर्ड अपडेट करना होता है और यह काम नहीं करता है, तो यह उपयोगकर्ता के लिए यह जानना उपयोगी हो सकता है कि यह लॉक टाइमआउट या टीसीपी कनेक्शन रीसेट से हुआ है, लेकिन प्रोग्राम स्टैंडपॉइंट से, क्या अधिक महत्वपूर्ण है यह जानना है कि ... – supercat