System.exit în Java

Oprește imediat programul (JVM-ul) cu un cod de ieșire: 0 înseamnă succes, altă valoare înseamnă eroare.

Sintaxă
static void exit(int cod)

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 bloc try și te aștepți ca finally să î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.