ऑनलाइन चुनौती को हल करते समय, मैंने जावा के निम्नलिखित व्यवहार को देखा जो मुझे थोड़ा अजीब मिला। मैं निम्नलिखित रूपरेखा के साथ एक कार्यक्रम संकलन के द्वारा शुरू कर दिया:जावा संकलन में त्रुटियों का अप्रत्याशित क्रम
- मैं नहीं संभाला है अपवाद
BufferedReader
से फेंक दिया हो सकता है:import java.io.*; class WeirdJava { public static void main (String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); HashMap<Integer, Integer> map = new HashMap<Integer,Integer>(); System.out.println("Weird Java"); } }
सूचना उपरोक्त कार्यक्रम में, वहाँ दो त्रुटियाँ हैं।
- मैंने मानक
util
लाइब्रेरी आयात नहीं की है जिसमेंHashMap
है।
अब, जब मैं उपर्युक्त प्रोग्राम को संकलित करने का प्रयास करता हूं, जावा कंपाइलर त्रुटि देता है कि इसे HashMap
प्रतीक नहीं मिल सकता है। ध्यान दें कि HashMap
शामिल घोषणा BufferedReader
के बाद आता है। इसके बाद, मैं इस कार्यक्रम के लिए निम्न इंपोर्ट स्टेटमेंट जोड़ें:
import java.util.HashMap;
जब मैं कार्यक्रम फिर से संकलन, इस बार संकलक त्रुटि दिखाता है
असूचित अपवाद IOException; पकड़े जाने या जा फेंक दिया
मेरे सवालों का घोषित किया जाना चाहिए:
- क्यों इस त्रुटि पिछले संकलन की कोशिश में फेंक दिया नहीं है?
- जिस क्रम में संकलन त्रुटि आती है वह प्राकृतिक प्रतीत नहीं होती है। इस दिनचर्या के दौरान खेलने वाले कंपाइलर डिज़ाइन सिद्धांत क्या हैं?
संकलक इस पास में अनिश्चित अपवाद के बारे में क्यों नहीं बताता है? – Bhoot
@ बूट एकमात्र कारण मैं सोच सकता था कि यह अभी तक अपवाद अपवादों की जांच के चरण तक नहीं पहुंच पाया है। आयात के बिना प्रकारों का सामना करते समय यह तुरंत लौट आया। – manouti
मैं इस कारण से असहमत नहीं हूं, लेकिन यह अप्राकृतिक लगता है।मैं इस विषय को संबोधित करने वाले किसी भी साहित्य की सराहना करूंगा (या इससे संबंधित कुछ भी)। – Bhoot