मेरे पास एक विशेष स्थिति है जहां मुझे अपवादों को फँसाने और अपवाद के स्थान पर क्लाइंट को ऑब्जेक्ट वापस करने की आवश्यकता है। मैं एक उच्च स्तर पर अपवाद हैंडलिंग तर्क डाल सकता हूं यानी एक कोशिश खंड के भीतर Foo लपेटें।मैं इस अपवाद हैंडलिंग कोड को DRY सिद्धांत का पालन कैसे कर सकता हूं?
कुछ नमूना कोड के साथ प्रदर्शन करना सबसे अच्छा है। अपवाद हैंडलिंग तर्क विधि के इरादे को ढका रहा है और यदि मेरे पास है, तो फू क्लास में, इसी तरह के इरादे के कई तरीके हैं, मुझे लगता है कि मैं खुद को पकड़ने के अधिकांश तर्क को दोहराता हूं।
नीचे दिए गए कोड में सामान्य अपवाद कार्यक्षमता को लपेटने के लिए सबसे अच्छी तकनीक क्या होगी?
public class Foo
{
public Bar SomeMethodThatCanThrowExcepetion()
{
try
{
return new Bar().Execute();
}
catch(BazException ex)
{
WriteLogMessage(ex, Bar.ErrorCode);
return new Bar() { ErrorMessage = ex.Message, ErrorCode = Bar.ErrorCode;}
}
}
public Baz SomeMethodThatCanThrowExcepetion(SomeObject stuff)
{
try
{
return new Baz(stuff).Execute();
}
catch(BazException ex)
{
WriteLogMessage(ex, Baz.ErrorCode);
return new Baz() { ErrorMessage = ex.Message, ErrorCode = Baz.ErrorCode;}
}
}
}
क्या आप अपना अपवाद केवल एक और स्तर को ऊपर नहीं रख सकते थे और श्रृंखला को अपवाद फेंक सकते थे? – ametren
दुर्भाग्य से, मैं नहीं कर सकता। मैं यहां प्रतिबंधित हूं। – fin
क्या 'बार' और 'बाज' के बीच कोई आम आधार वर्ग है? – Lee