मुझे जावा में checked
और unchecked
अपवादों के बीच अंतर को समझने में कुछ समस्याएं आ रही हैं।जावा में चेक किए गए बनाम अनचेक अपवाद
- सबसे पहले,
checked
अपवादों को संकलन समय के दौरान असामान्यताओं की तलाश करनी चाहिए। विभिन्न स्रोतों में दिए गए उदाहरणों, डेटाबेस कनेक्टिविटी, उनमें से कुछ के रूप में फ़ाइल से निपटने का हवाला देते हैं, जबकिunchecked
अपवाद हैं, एक सरणी की सीमा से परे अनुक्रमण तरह प्रोग्रामर की ओर से त्रुटियों के लिए देखने के लिए अपेक्षा की जाती है, आदि
नहीं करना चाहिए यह दूसरा रास्ता दौर है? मेरा मतलब है, डेटाबेस कनेक्टिविटी रन-टाइम के दौरान किया जाता है, है ना? फ़ाइल-हैंडलिंग के लिए भी चला जाता है। संकलन समय के दौरान आप फ़ाइल-हैंडल नहीं खोलते हैं, तो संकलन-समय के दौरान उस पर एक संभावित त्रुटि क्यों देखी जाती है? दूसरी तरफ, इसकी सीमा से परे एक सरणी को पहले से ही प्रोग्राम में किया जा रहा है, जिसे संकलन समय के दौरान चेक किया जा सकता है (यदि रन-टाइम के दौरान उपयोगकर्ता द्वारा असामान्य सूचकांक की आपूर्ति की जाती है, तो यह रन-टाइम होने के लिए ठीक है मुसीबत)। मुझे यहां क्या समझ नहीं आ रहा है?
2 दूसरे, कैसे RunTimeException
, जो अपने आप unchecked
, किया जा रहा है कर सकते हैं उपवर्ग Exception
, जो checked
है? यह क्या संकेत करता है?
class ThrowsDemo {
public static char prompt(String str)
throws java.io.IOException {
System.out.print(str + ": ");
return (char) System.in.read();
}
public static void main(String args[]) {
char ch;
try {
ch = prompt("Enter a letter");
}
catch(java.io.IOException exc) {
System.out.println("I/O exception occurred.");
ch = 'X';
}
System.out.println("You pressed " + ch);
}
}
यहाँ throws
खंड आवश्यक है:
मैं checked
अपवाद के उपयोग समझा हरबर्ट शिल्डट की किताब में एक उदाहरण पाया? मैं क्यों यह सिर्फ सामान्य रूप से ऐसा नहीं कर सकते एक try-catch
बयान इस तरह के साथ (खेद मैं नहीं पता है एक IO Exception
अनुकरण करने के लिए कैसे, तो यह अपने आप की जाँच नहीं कर सका!):
class ThrowsDemo {
public static char prompt(String str) {
System.out.print(str + ": ");
return (char) System.in.read();
}
public static void main(String args[]) {
char ch;
try {
ch = prompt("Enter a letter");
}
catch(java.io.IOException exc) {
System.out.println("I/O exception occurred.");
ch = 'X';
}
System.out.println("You pressed " + ch);
}
}
[अनियंत्रित अपवाद या क्रम अपवाद के बीच अंतर] की संभावित डुप्लिकेट (http://stackoverflow.com/questions/2699580/difference-between-unchecked-exception-or-runtime-exception) – Tom
चेक किए गए अपवाद हैं संकलन-समय की समस्याओं का पता लगाने के लिए नहीं *। यह संकलक त्रुटियों का उद्देश्य है। – erickson