विधि में होने वाली ज्ञात त्रुटियों को संभालने के कुछ अच्छे तरीके क्या हैं?किसी विधि में ज्ञात त्रुटियों और त्रुटि संदेशों को संभालना
चलिए एक उदाहरण के रूप में उपयोगकर्ता पंजीकरण विधि लेते हैं। जब कोई उपयोगकर्ता साइन अप कर रहा है, तो एक विधि SignUp(User user)
कहा जाता है। कुछ ज्ञात त्रुटियां हो सकती हैं जो हो सकती हैं।
- ईमेल पहले
- प्रयोक्ता नाम पहले से पंजीकृत है
- पंजीकृत किया गया है आदि
आप विशिष्ट अपवाद फेंक सकता है:
public void SignUp(User user)
{
// Email already exists
throw new EmailExistsException();
}
अब विशिष्ट अपवाद पकड़ा जा सकता है।
यह मेरी राय में बुरा है, क्योंकि प्रवाह नियंत्रण के लिए अपवादों का उपयोग किया जा रहा है।
आप एक बूलियन बताते हुए लौट सकता है अगर यह सफल रहा और एक त्रुटि होती है, तो तैयार हो जाओ होता है कि एक त्रुटि संदेश में पारित:
public bool SignUp(User user, out/ref string errorMessage)
{
// Email already exists
errorMessage = "Email already exists.";
return false;
}
मैं कुछ कारणों से इस तरह नहीं है।
- एक मूल्य वापस किया जाना है। क्या होगा यदि विधि को मूल्य वापस करने की आवश्यकता है?
- हर बार एक त्रुटि संदेश पारित किया जाना है।
- विधि का उपभोक्ता यह निर्धारित करना चाहिए कि संदेश क्या है।
चलिए बस कुछ भी कहें जहां विधि में वास्तविक संदेश सेट खराब है।
आप त्रुटि कोड इस्तेमाल कर सकते हैं:
public enum Errors
{
Successful = 0,
EmailExists,
UsernameExists,
Etc
}
public Errors SignUp(User user)
{
// Email already exists
return Errors.EmailExists;
}
// or
public void SignUp(User user, out/ref Errors error)
{
// Email already exists
error = Errors.EmailExists;
}
बहुत पिछले एक यहाँ एक मैं सबसे ज्यादा पसंद है, लेकिन मैं अभी भी यह एक पूरी बहुत पसंद नहीं है। मुझे एक त्रुटि कोड पास करने का विचार पसंद नहीं है। मुझे उस मामले के लिए कोड को वापस करने का विचार पसंद नहीं है।
मुझे कस्टम अपवादों का उपयोग करने का विचार पसंद है क्योंकि यह थोड़ा क्लीनर लगता है, लेकिन मुझे प्रवाह नियंत्रण के लिए अपवादों का उपयोग करने का विचार पसंद नहीं है। शायद इस उदाहरण की तरह विशिष्ट मामलों में, सिस्टम में पहले से ही एक ईमेल होना चाहिए एक अपवाद हो, और यह ठीक है।
इस स्थिति में अन्य लोगों ने क्या किया है?
संभव डुप्लिकेट http://stackoverflow.com/questions/409563/best-practices-for-exception-management- इन-जावा या ग) –