Ce face System.exit
System.exit(cod) oprește mașina virtuală Java. Codul de după apel nu se mai execută, nici blocurile finally care așteaptă. Codul de ieșire ajunge la sistemul de operare: prin convenție, 0 înseamnă că totul a mers bine, iar orice altă valoare (de obicei 1) semnalează o eroare. Scripturile îl pot verifica (în terminal, cu echo $?).
Un program se termină oricum singur când main se încheie (și nu mai rulează alte fire obișnuite). Folosește exit doar în programe de linie de comandă, pentru a raporta o eroare; nu îl apela din biblioteci sau aplicații web, pentru că oprește tot procesul.
Parametri
| Parametru | Descriere |
|---|---|
cod |
Codul de ieșire: 0 pentru succes, diferit de 0 pentru eroare. |
Ce returnează
Nu returnează niciodată: programul se oprește.
Exemple
Exemplul 1: Oprire cu succes
Ultimul mesaj nu apare, pentru că programul se oprește la System.exit(0).
public class Main {
public static void main(String[] args) {
String[] comenzi = {"adaugă", "listează", "ieșire", "șterge"};
for (String c : comenzi) {
if (c.equals("ieșire")) {
System.out.println("La revedere!");
System.exit(0);
}
System.out.println("Execut: " + c);
}
System.out.println("Acest rând nu apare.");
}
}
Rezultat
Execut: adaugă
Execut: listează
La revedere!
Exemplul 2: Cod de eroare pentru un script
Programul raportează eroarea și iese cu codul 1. Un script care îl rulează poate verifica acest cod.
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
Path fisier = Path.of("note.txt");
if (!Files.exists(fisier)) {
System.err.println("Eroare: fișierul " + fisier + " lipsește");
System.exit(1);
}
System.out.println("Procesez " + fisier);
}
}
Rezultat (programul se oprește cu codul 1)
Eroare: fișierul note.txt lipsește
$ echo $?
1
Greșeli frecvente
- Apelezi
System.exitîn mijlocul unui bloctryși te aștepți cafinallysă închidă fișierele: nu se mai execută. - Folosești
exit(0)și după o eroare: scripturile și sistemele de build cred că programul a reușit.
Comenzi înrudite
System: Clasa care leagă programul de sistem: ieșirea standard (out), ieșirea de erori (err), intrarea (in), timpul, variabilele și setările.try, catch și finally: try încearcă un bloc de cod, catch prinde și tratează excepțiile aruncate în el, iar finally rulează mereu la ieșire.Thread: Un fir de execuție: cod care rulează în paralel cu restul programului. start() îl pornește, join() așteaptă să se termine.