java - Why does FindBugs raise a critical warning when explicitly throwing a NPE? -
निम्नलिखित पर विचार करें
एनपी: नल मान dereferenced होने की गारंटी है (NP_GUARANTEED_DEREF)
एक बयान या शाखा है कि अगर गारंटी देता है कि इस बिंदु पर एक मूल्य शून्य है, और उस मूल्य को परिभाषित करने की गारंटी दी गई है (रनटाइम अपवाद )।
ध्यान दें कि एक जांच जैसे कि (एक्स == रिक्त) नए NullPointerException () फेंकना;
इसका मतलब है कि रन टाइम अपवादों को शामिल करने वाले मार्गों को छोड़कर ?
इसके अलावा क्यों एक चेक जैसे
यदि (x == नल) नया नलपॉइंटर एक्सेप्शन (); एक चेतावनी उठाना?
इस भयानक अनुक्रमित कोड पर विचार करें:
स्ट्रिंग मान = शून्य; यदि (5 & gt; 8) {value = "foo"; } कुछ करो(); यदि (value.equals ("foo")) {System.out.println ("मान है foo"); }
स्थिर विश्लेषण यह साबित कर सकता है कि
मान होगा
null जब
बराबर कहा जाता है, जिसके कारण < कोड> NullPointerException फेंकने के लिए। हालांकि, यदि कॉल को
doSomething () परिणामों को फेंका गया रनटाइम अपवाद होता है, तो कॉल को
बराबर पर कभी नहीं पहुंचा जा सकता है।
आपके दूसरे प्रश्न के लिए, FindBugs इस कोड के लिए एक चेतावनी जारी करता है
अगर (मान ==) नल) {नया नल पॉइंटर एक्सेप्शन (); }
क्योंकि यह प्रभाव उसी तरह होता है जब आप dereference को
null मान करते हैं चूंकि dereference एक चेतावनी के योग्य है, इसलिए किसी भी कोड है जो कि dereference नकल करता है।
Comments
Post a Comment