मुझे एक ऐसे केस का सामना करना पड़ रहा है जहां मैं एक static final
फ़ील्ड को एक प्रारंभिक कथन के साथ घोषित करना चाहता हूं जिसे चेक अपवाद फेंकने के लिए घोषित किया गया है। आमतौर पर, यह इस तरह दिखना चाहते हैं:चेक किए गए अपवाद को फेंकने वाले एक स्थिर अंतिम फ़ील्ड प्रारंभकर्ता को कैसे संभालें
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
मुद्दा मैं यहाँ है कि ObjectName
निर्माता विभिन्न जांचे हुए अपवादों, जो मैं के बारे में परवाह नहीं है फेंक सकता है (क्योंकि मैं जानता हूँ कि था मेरा नाम मान्य है, और यह ठीक है अगर यह दुर्भाग्य से दुर्घटनाग्रस्त हो जाता है)। ,
public static final ObjectName OBJECT_NAME; static{ try{ OBJECT_NAME = new ObjectName("foo:type=bar"); }catch(final Exception ex){ throw new RuntimeException("Failed to create ObjectName instance in static block.",ex); } }
क्योंकि स्थिर ब्लॉक वास्तव में कर रहे हैं वास्तव में मुश्किल पढ़ने के लिए: जावा संकलक मुझे सिर्फ इस पर ध्यान न दें (के रूप में यह एक जाँच अपवाद है) करने देगा नहीं, और मैं का सहारा लेना नहीं पसंद करेंगे। क्या किसी के पास इस मामले को एक अच्छे, साफ तरीके से संभालने के बारे में कोई सुझाव है?
मेरा व्यक्तिगत समाधान एक 'CheckedExceptionsAreAPainInTheAssSometimesException' है, जो एक है फेंकने के लिए है क्रम अपवाद। कार्यक्रम तो बस दुर्घटनाग्रस्त हो जाएगा। – Airhead