En guide til System.exit ()

1. Oversigt

I denne vejledning skal vi se på hvad System.exit betyder på Java.

Vi ser dens formål, hvor de skal bruges, og hvordan man bruger den. Vi ser også, hvad der er forskellen i at påberåbe sig det med forskellige statuskoder.

2. Hvad er? System.exit?

System.exit er en ugyldig metode. Det tager en udgangskode, som den viderefører til det kaldende script eller program.

Afslutter med en kode for nul betyder en normal udgang:

System.exit (0);

Vi kan videregive ethvert heltal som et argument til metoden. En statuskode, der ikke er nul, betragtes som en unormal udgang.

Ringer til System.exit metoden afslutter den aktuelt kørende JVM og afslutter programmet. Denne metode vender ikke normalt tilbage.

Det betyder at den efterfølgende kode efter System.exit er faktisk utilgængeligog alligevel ved compileren ikke noget om det.

System.exit (0); System.out.println ("Denne linje kan ikke nås");

Det er ikke en god ide at lukke et program med System.exit (0). Det giver os det samme resultat af at gå ud af vigtigste metode og stopper også de efterfølgende linjer i at udføre, også tråden, der påberåber sig System.exit blokerer, indtil JVM ophører. Hvis en lukningskrog sender en opgave til denne tråd, fører det til en dødvande.

3. Hvorfor har vi brug for det?

Den typiske brugssag til System.exit er, når der er en unormal tilstand, og vi skal straks afslutte programmet.

Også, hvis vi er nødt til at afslutte programmet fra et andet sted end hovedmetoden, System.exit er en måde at opnå det på.

4. Hvornår har vi brug for det?

Det er almindeligt for et script at stole på udgangskoderne for kommandoer, det påberåber sig. Hvis en sådan kommando er et Java-program, så System.exit er praktisk til at sende denne udgangskode.

For eksempel kan vi i stedet for at kaste en undtagelse returnere en unormal udgangskode, som derefter kan fortolkes af det kaldende script.

Eller vi kan bruge System.exit for at påkalde eventuelle lukningskrog, vi har registreret. Disse kroge kan indstilles til at rydde op i de ressourcer, der holdes, og gå sikkert ud af andre ikke-dæmonstråde.

5. Et simpelt eksempel

I dette eksempel forsøger vi at læse en fil, og hvis den findes, udskriver vi en linje fra den. Hvis filen ikke findes, afslutter vi programmet med System.exit fra fangstblokken.

prøv {BufferedReader br = ny BufferedReader (ny FileReader ("file.txt")); System.out.println (br.readLine ()); br.close (); } fange (IOException e) {System.exit (2); } endelig {System.out.println ("Afslutter programmet"); }

Her skal vi bemærke, at den endelige blok ikke bliver udført, hvis filen ikke findes. Fordi System.exit på fangstblokkene forlader JVM og tillader ikke langt om længe blokere at udføre.

6. Valg af en statuskode

Vi kan videregive ethvert heltal som en statuskode, men den generelle praksis er, at en System.exit med statuskode 0 er normal, og andre er unormale udgange.

Bemærk, at dette kun er en "god praksis" og ikke er en streng regel, som kompilatoren vil være interesseret i.

Også, det er værd at bemærke, når vi påberåber et Java-program fra kommandolinjen, at statuskoden tages i betragtning.

I nedenstående eksempel, når vi prøver at udføre SystemExitExample.class, hvis den forlader JVM ved at ringe til System.exit med en statuskode, der ikke er nul, bliver følgende ekko ikke udskrevet.

java SystemExitExample && echo "Jeg udskrives ikke"

For at gøre vores program i stand til at kommunikere med andre standardværktøjer, kan vi overveje at følge de standardkoder, som de relaterede systemer bruger til at kommunikere.

For eksempel definerer UNIX-statuskoder 128 som standard for "ugyldigt argument for at afslutte". Så det kan være en god ide at bruge denne kode, når vi har brug for, at vores statuskode meddeles til operativsystemet. Ellers kan vi vælge vores kode.

7. Konklusion

I denne vejledning diskuterede vi hvordan System.exit fungerer, hvornår man skal bruge det, og hvordan man bruger det.

Det er en god praksis at bruge undtagelseshåndtering eller almindelige retursætninger for at afslutte et program, når du arbejder med applikationsservere og andre almindelige applikationer. Anvendelse af System.exit metode passer bedre til script-baserede applikationer eller hvor som helst statuskoder fortolkes.

Du kan tjekke eksemplerne i denne artikel på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found