Un ghid pentru System.exit ()

1. Prezentare generală

În acest tutorial, vom arunca o privire la ceea ce înseamnă System.exit în Java.

Vom vedea scopurile sale, unde să îl folosim și cum să îl folosim. De asemenea, vom vedea care este diferența în invocarea acestuia cu coduri de stare diferite.

2. Ce este System.exit ?

System.exit este o metodă nulă . Este nevoie de un cod de ieșire, pe care îl transmite scriptului sau programului de apelare.

Ieșirea cu un cod zero înseamnă o ieșire normală:

System.exit(0);

Putem trece orice număr întreg ca argument către metodă. Un cod de stare diferit de zero este considerat o ieșire anormală.

Apelarea metodei System.exit încetează JVM care rulează în prezent și iese din program. Această metodă nu revine în mod normal.

Aceasta înseamnă că codul ulterior după System.exit este efectiv de neatins și totuși, compilatorul nu știe despre el.

System.exit(0); System.out.println("This line is unreachable");

Nu este o idee bună să închideți un program cu System.exit (0) . Ne oferă același rezultat al ieșirii din metoda principală și, de asemenea, oprește executarea liniilor ulterioare, de asemenea firul care invocă System.exit se blochează până când JVM se termină. Dacă un cârlig de închidere trimite o sarcină la acest fir, acesta duce la un blocaj.

3. De ce avem nevoie de ea?

Cazul de utilizare tipic pentru System.exit este atunci când există o afecțiune anormală și trebuie să ieșim din program imediat.

De asemenea, dacă trebuie să terminăm programul dintr-un alt loc decât metoda principală, System.exit este o modalitate de a-l realiza.

4. Când avem nevoie de ea?

Este obișnuit ca un script să se bazeze pe codurile de ieșire ale comenzilor pe care le invocă. Dacă o astfel de comandă este o aplicație Java, atunci System.exit este la îndemână pentru trimiterea acestui cod de ieșire.

De exemplu, în loc să aruncăm o excepție, putem returna un cod de ieșire anormal care poate fi apoi interpretat de scriptul apelant.

Sau putem folosi System.exit pentru a invoca orice cârlige de închidere pe care le-am înregistrat. Aceste cârlige pot fi setate pentru a curăța resursele deținute și pentru a ieși în siguranță din alte fire non-daemon.

5. Un exemplu simplu

În acest exemplu, încercăm să citim un fișier și, dacă acesta există, imprimăm o linie din acesta. Dacă fișierul nu există, ieșim din program cu System.exit din blocul de captură.

try { BufferedReader br = new BufferedReader(new FileReader("file.txt")); System.out.println(br.readLine()); br.close(); } catch (IOException e) { System.exit(2); } finally { System.out.println("Exiting the program"); }

Aici, trebuie să observăm că blocul final nu se execută dacă fișierul nu este găsit. Deoarece System.exit de pe blocurile de captură iese din JVM și nu permite blocului final să se execute.

6. Alegerea unui cod de stare

Putem trece orice număr întreg ca cod de stare, dar practica generală este că un System.exit cu cod de stare 0 este normal, iar altele sunt ieșiri anormale.

Rețineți că aceasta este doar o „bună practică” și nu este o regulă strictă la care compilatorul ar avea grijă.

De asemenea, merită menționat, atunci când invocăm un program Java din linia de comandă, că este luat în considerare codul de stare.

În exemplul de mai jos, când încercăm să executăm SystemExitExample.class, dacă acesta iese din JVM apelând System.exit cu un cod de stare diferit de zero, atunci următorul ecou nu se imprimă.

java SystemExitExample && echo "I will not be printed"

Pentru ca programul nostru să poată comunica cu alte instrumente standard, am putea lua în considerare respectarea codurilor standard pe care sistemele aferente le folosesc pentru a comunica.

De exemplu, codurile de stare UNIX definesc 128 ca standard pentru „argument nevalid pentru a ieși”. Deci, ar putea fi o idee bună să folosim acest cod atunci când avem nevoie de codul nostru de stare pentru a fi comunicat sistemului de operare. În caz contrar, suntem liberi să ne alegem codul.

7. Concluzie

În acest tutorial, am discutat despre modul în care funcționează System.exit când îl folosiți și cum să îl utilizați.

Este o practică bună să folosiți instrucțiuni de gestionare a excepțiilor sau instrucțiuni simple de returnare pentru a părăsi un program atunci când lucrați cu servere de aplicații și alte aplicații obișnuite. Utilizarea metodei System.exit se potrivește mai bine aplicațiilor bazate pe scripturi sau oriunde sunt interpretate codurile de stare.

Puteți consulta exemplele furnizate în acest articol pe GitHub.