उसकी प्रभावी जावा में यहोशू बलोच लिखते हैं:आप अनचेक अपवाद कैसे दस्तावेज़ करते हैं?
"प्रत्येक अनियंत्रित अपवाद है कि एक विधि फेंक कर सकते हैं दस्तावेज़ के लिए जावाडोक @throws टैग का प्रयोग करें, लेकिन कीवर्ड फेंकता विधि घोषणा में अनियंत्रित अपवाद शामिल करने के लिए उपयोग नहीं करते हैं । "
खैर कि वास्तव में उचित लगता है, लेकिन कैसे पता लगाने के लिए, क्या अनियंत्रित अपवाद मेरी विधि फेंक कर सकते हैं?
के एक के बाद वर्ग की सोचते हैं:
public class FooClass {
private MyClass[] myClass;
/**
* Creates new FooClass
*/
public FooClass() {
// code omitted
// do something with myClass
}
/**
* Performs foo operation.<br />
* Whatever is calculated.
* @param index Index of a desired element
* @throws HorribleException When something horrible happens during computation
*/
public void foo(int index) {
try {
myClass[index].doComputation();
} catch (MyComputationException e) {
System.out.println("Something horrible happened during computation");
throw new HorribleException(e);
}
}
}
अब, मैं HorribleException दस्तावेज है, लेकिन यह काफी स्पष्ट है, कि foo विधि भी अनियंत्रित java.lang.ArrayIndexOutOfBoundsException फेंक कर सकते हैं। कोड जितना जटिल होगा, सभी अनचेक अपवादों के बारे में सोचना मुश्किल है कि विधि फेंक सकती है। मेरा आईडीई मुझे बहुत मदद नहीं करता है और न ही कोई उपकरण करता है। चूंकि मुझे इसके लिए कोई उपकरण नहीं पता है ...
आप इस तरह की स्थिति से कैसे निपटते हैं?
मुझे लगता है कि मार्ग का अर्थ क्या है कि आप सभी अनचेक अपवाद दस्तावेज करते हैं आपका कोड स्पष्ट रूप से फेंकता है - जिस विधि को आप दस्तावेज कर रहे हैं और यदि यह आपके किसी भी अन्य तरीके को कॉल करता है जो अनचेक अपवाद फेंकता है। –
इसके बजाय 'नया भयानक अपवाद फेंक दें ("अनुक्रमणिका =" + अनुक्रमणिका, ई) '। आपके स्टैक में जितनी अधिक जानकारी आपके पास है, उतनी ही बेहतर है। –
यह सिर्फ डमी उदाहरण है। मेरा मानना है कि असली बिंदु एक और था - भयानक अपवाद पर विचार किया गया, लेकिन ArrayIndexOutOfBoundsException नहीं। विभिन्न अपवादों पर विचार करें, न केवल डमी फू विधि। – Xorty