अनरीचेबल कोड त्रुटि तब होती है जब कोड को विभिन्न कारणों से कंपाइल नहीं किया जा सकता, जिनमें से कुछ में शामिल हैं: अनंत लूप, अनरीचेबल लाइन से पहले रिटर्न स्टेटमेंट।
उदाहरण
public class Demo {
public static void main(String args[]) {
int val = 5;
for (;;) {
if (val == 5) {
break;
System.out.println("यदि शर्त सत्य नहीं है, तो यह लाइन प्रिंट होगी।");
}
}
}
}
आउटपुट (कंपाइल त्रुटि)
Demo.java:11: error: unreachable statement
System.out.println("यदि शर्त सत्य नहीं है, तो यह लाइन प्रिंट होगी।");
^
1 error
व्याख्या: Demo नामक एक क्लास में मुख्य फंक्शन होता है, और एक मान परिभाषित किया जाता है, और इस मान की जांच की जाती है और एक खाली 'for' लूप चलाया जाता है। यदि मान पाया जाता है, तो नियंत्रण लूप से बाहर निकल जाता है अन्यथा एक संदेश प्रिंट करता है। चूंकि यह एक अनंत लूप है, यह अनरीचेबल स्टेटमेंट त्रुटि देता है।
अनरीचेबल कोड के सामान्य कारण:
| कारण | उदाहरण |
|---|---|
| रिटर्न के बाद कोड | return x; System.out.println("यहां"); |
| थ्रो के बाद कोड | throw new Exception(); x = 5; |
| ब्रेक/कंटिन्यू के बाद लूप में | break; System.out.println("यहां"); |
| अनंत लूप के बाद कोड | while(true) {} System.out.println("यहां"); |
| if-else दोनों में रिटर्न | if(x) return; else return; code; |
उदाहरण - प्रत्येक मामला:
// 1. रिटर्न के बाद
void method1() {
return;
System.out.println("अनरीचेबल"); // त्रुटि
}
// 2. अनंत लूप
void method2() {
while (true) { }
System.out.println("अनरीचेबल"); // त्रुटि
}
// 3. थ्रो के बाद
void method3() {
throw new RuntimeException();
System.out.println("अनरीचेबल"); // त्रुटि
}
// 4. सभी पथ कवर करते हैं
void method4(boolean flag) {
if (flag) return;
else return;
System.out.println("अनरीचेबल"); // त्रुटि
}
इरादतन अनंत लूप (मान्य):
// यह ठीक है - लूप के अंदर कोड रीचेबल है
while (true) {
doSomething();
if (shouldStop()) break;
}
// यह त्रुटि - लूप के बाद कोड
while (true) { }
doSomething(); // अनरीचेबल
नोट: कंपाइलर कंट्रोल फ्लो विश्लेषण करता है ताकि अनरीचेबल कोड का पता लगाया जा सके। यह एक कंपाइल-टाइम त्रुटि है, रनटाइम नहीं।