मैं कुछ दोस्तों और आई के बीच एक बहस में चला गया हूं। वे अपवाद के क्षेत्रों के रूप में ClientErrorExceptionऔर ServerErrorExceptionविस्तार के साथ सामान्य अपवाद पसंद करते हैं, जबकि मैं चीजों को अधिक विशिष्ट बनाना पसंद करता हूं। उदाहरण के लिए, मेरे पास कुछ अपवाद हो सकते हैं जैसे:
BadRequestExceptionAuthenticationFailureExceptionProductNotFoundException
इनमें से प्रत्येक त्रुटि कोड के आधार पर बनाया गया है जो एपीआई से लौटा है।
अपवाद के लाभ के बाद यह जावा के लिए मुहावरेदार लगता है। हालाँकि, मेरे दोस्तों की राय बिल्कुल असामान्य नहीं है।
क्या कोड पठनीयता और एपीआई प्रयोज्य के संदर्भ में एक पसंदीदा तरीका है, या क्या यह वास्तव में वरीयता के लिए नीचे आता है?
abstractगेटर तरीकों के साथ अपवाद कक्षाओं को परिभाषित और सामान्यीकृत कर सकते हैं और फिर बारीकियों को सामान्य लोगों का विस्तार कर सकते हैं। जैसे AuthenticationFaliureException extends ClientErrorException। इस तरह, प्रत्येक उपयोगकर्ता यह चुन सकता है कि वे अपवादों से कैसे निपटना चाहते हैं। यह हालांकि अधिक काम करता है, जाहिर है। हालांकि, जब एक आवेदन (एक पुस्तकालय के बजाय) लिख रहा है, तो यह एक अलग स्थिति आईएमएचओ है। उस मामले में मैं अपवादों को आपकी जरूरत से ज्यादा दानेदार नहीं बनाऊंगा, सरलता के लिए।