Conceptul Java al zilei

Cod inaccesibil :

Care instrucțiune din orice program Java trebuie să fie accesibilă, adică fiecare instrucțiune trebuie să fie executabilă cel puțin o dată în oricare dintre fluxurile posibile. În cazul în care un cod nu poate fi executabil în nici unul dintre fluxurile posibile, atunci se numește cod inaccesibil. Codul inaccesibil în java este o eroare de compilare.

Vezi următorul exemplu. Încercați să compilați acest exemplu.

public class UnreachableCodeInJava{void UnreachableCode_method(boolean b){if(b){return;}else{return;}System.out.println("Unreachable Statement"); //Compile Time Error : Unreachable Code}}

În acest exemplu, linia 14 dă o eroare de timp de compilare : Unreachable Code. Deoarece această instrucțiune nu poate fi atinsă în niciunul dintre fluxuri. Dacă booleanul „b” este adevărat, atunci blocul if va fi executat și controlul va fi returnat. Dacă booleanul „b” este fals, atunci blocul else va fi executat și controlul va fi returnat. Astfel, în ambele fluxuri, controlul nu ajunge la linia 14. Aceasta rămâne inaccesibilă. Prin urmare, se produce o eroare de compilare.

Vezi acest exemplu.

public class UnreachableCodeInJava{void UnreachableCode_method(boolean b){System.out.println("Reachable Statement");return;System.out.println("Unreachable Statement"); //Compile Time Error}}

În acest exemplu, UnreachableCode_method() are un singur flux. Doar în acest flux, toate declarațiile trebuie să fie executate cel puțin o dată. Dar, controlul se întoarce doar la a doua instrucțiune. Deci, a treia instrucțiune devine inaccesibilă.

Cod mort :

Codul mort este, de asemenea, un cod inaccesibil, dar codul mort nu dă eroare la compilare. El vă dă doar un avertisment.
De exemplu,

public class UnreachableCodeInJava{void UnreachableCode_method(boolean b){System.out.println("Reachable Statement");if(true){return;}System.out.println("Unreachable Statement"); //Dead Code}}

În exemplul de mai sus, blocul if va fi întotdeauna executat deoarece îi transmitem valoarea constantă „true”. Așadar, linia 12 devine inaccesibilă. Deși compilatorul nu se va plânge de acest lucru. El vă dă doar un avertisment spunând că este un cod mort.

Acum, faceți o mică modificare la exemplul de mai sus.Înlocuiți blocul if cu blocul while.Compilați-l și vedeți ce se întâmplă.

public class UnreachableCodeInJava{static void UnreachableCode_method(boolean b){System.out.println("Reachable Statement");while(true){return;}System.out.println("Unreachable Statement"); //Compile Time Error}}

Acest exemplu dă o eroare de compilare: Unreachable code. Dar de ce? De ce compilatorul se răzgândește când vede blocul while? De ce nu se plânge de codul inaccesibil după blocul if?

Aceasta se datorează faptului că regulile privind codul inaccesibil pentru diferite blocuri, cum ar fi constructori, metode, try, catch, if, for, while etc. sunt definite individual în specificațiile limbajului Java. În conformitate cu specificațiile limbajului Java, expresia condițională a blocului If nu va fi evaluată la compilare pentru a decide codul de neatins. De aceea, în cazul blocului if nu se va obține o eroare la compilare. Puteți verifica regulile privind codul inaccesibil aici:

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.