तकनीकी रूप से समस्या को दूर करने के तरीके के बारे में सलाह देने के अलावा, मैं एक पल लेना चाहता हूं और समझाता हूं कि इसे पहली जगह "खराब अभ्यास" क्यों माना जाता है।
चलिए Error
कक्षा को स्पष्ट करने के द्वारा शुरू करते हैं।
जावा में, त्रुटियों और अपवाद (जो मुख्य प्रकार हैं) फेंक दिए जाते हैं। उपरोक्त में से एक को फेंकना throw
कीवर्ड का उपयोग करके किया जाता है। प्रत्येक वर्ग जो मूल java.lang.Throwable
फैलाता है उसे फेंक दिया जा सकता है।
दो वर्ग हैं जो मूल Throwable
कक्षा से प्राप्त होते हैं: Exception
और Error
। उन दोनों के बीच अंतर उनके दस्तावेजों में समझाया गया है:
एक त्रुटिफेंकने योग्य का एक उपवर्ग है कि गंभीर समस्याओं है कि एक उचित आवेदन को पकड़ने की कोशिश नहीं करनी चाहिए इंगित करता है। अधिकांश ऐसी त्रुटियां असामान्य स्थितियां हैं। [...]
Source
वर्ग अपवाद और उसके उपवर्गों फेंकने योग्य कि की स्थिति को इंगित करता है का एक रूप है कि एक उचित आवेदन को पकड़ने के लिए चाहते हो सकता है कर रहे हैं ।
Source
जैसा कि ऊपर बताया गया है, त्रुटियों और अपवाद है क्योंकि उनके अलग मूल के अलग होती है। एक Error
सामान्य रूप से एक समस्या का संकेत देता है, जो एप्लिकेशन से पुनर्प्राप्त नहीं किया जा सकता है। इसलिए, उन्हें पकड़ा नहीं जाना चाहिए।
यह RuntimeException
के लिए भी सही है, लेकिन इसका उपयोग उच्च स्तरीय परत (उदा। विधियों) के साथ समस्या को इंगित करने के लिए किया जाता है। जबकि Error
निम्न-स्तर की समस्या इंगित करता है (उदा। रनटाइम)।
तो, अब आप समझ गए थे कि है कि आप केवल अपवाद और त्रुटियों जो आप से उबरने के लिए सक्षम हैं पकड़ने करेगा, अपने प्रश्न का उत्तर स्पष्ट किया जाना चाहिए।
हां, UnsatisfiedLinkError
को पकड़ना पूरी तरह से उचित है, क्योंकि आपका एप्लिकेशन इससे पुनर्प्राप्त हो सकता है।
मैं ऊपर (और अधिक विस्तार में और उदाहरण के साथ) और एक article on my Blog में कुछ विस्तारित जानकारी को कवर किया।
स्रोत
2012-06-13 16:01:08
यहां सही रूपांतरण के बारे में कोई जानकारी नहीं है, लेकिन आप यह जांच सकते हैं कि फ़ाइल कोशिश करने से पहले मौजूद है या नहीं ... ['नई फ़ाइल (" पथ/helloworld.dll ") .exists()'] (http: // docs। oracle.com/javase/7/docs/api/java/io/File.html#exists%28%29) .... (संपादित करें: गलत सुझाव, मैं कोड को गलत तरीके से पढ़ता हूं) –
मैं इसे एक स्वीकार्य कामकाज मानता हूं। –
@Slanec आपको 'java.library.path' –