En guide til System.exit ()

1. Oversikt

I denne opplæringen vil vi se på hva System.exit betyr på Java.

Vi får se dens formål, hvor du skal bruke og hvordan du bruker den. Vi ser også hva som er forskjellen i å påkalle den med forskjellige statuskoder.

2. Hva er? System.exit?

System.exit er en tomrom metode. Det tar en utgangskode som den videreføres til anropsskriptet eller programmet.

Avslutter med en kode på null betyr en normal utgang:

System.exit (0);

Vi kan overføre hvilket som helst heltall som et argument til metoden. En statuskode som ikke er null, betraktes som en unormal utgang.

Ringer til System.exit metoden avslutter den gjeldende JVM og avslutter programmet. Denne metoden kommer ikke tilbake normalt.

Dette betyr at den påfølgende koden etter System.exit er effektivt utilgjengeligog likevel vet ikke kompilatoren om det.

System.exit (0); System.out.println ("Denne linjen er ikke tilgjengelig");

Det er ikke lurt å avslutte et program med System.exit (0). Det gir oss det samme resultatet av å gå ut av hoved- metoden og stopper også de påfølgende linjene fra å kjøres, også tråden som påkaller System.exit blokkerer til JVM avsluttes. Hvis en stengekrok sender en oppgave til denne tråden, fører det til en fastlåst situasjon.

3. Hvorfor trenger vi det?

Den typiske brukssaken for System.exit er når det er en unormal tilstand, og vi må avslutte programmet umiddelbart.

Også, hvis vi må avslutte programmet fra et annet sted enn hovedmetoden, System.exit er en måte å oppnå det på.

4. Når trenger vi det?

Det er vanlig at et skript stoler på utgangskodene for kommandoer det påberoper. Hvis en slik kommando er et Java-program, da System.exit er praktisk for sending av denne utgangskoden.

For eksempel, i stedet for å kaste et unntak, kan vi returnere en unormal utgangskode som deretter kan tolkes av anropsskriptet.

Eller vi kan bruke System.exit for å påkalle stengekroker vi har registrert. Disse krokene kan settes opp for å rydde opp i ressursene og gå trygt ut av andre ikke-demoniske tråder.

5. Et enkelt eksempel

I dette eksemplet prøver vi å lese en fil, og hvis den finnes, skriver vi ut en linje fra den. Hvis filen ikke eksisterer, avslutter vi programmet med System.exit fra fangstblokken.

prøv {BufferedReader br = new BufferedReader (new FileReader ("file.txt")); System.out.println (br.readLine ()); br.close (); } fange (IOException e) {System.exit (2); } til slutt {System.out.println ("Avslutter programmet"); }

Her må vi merke oss at den endelige blokken ikke blir utført hvis filen ikke blir funnet. Fordi det System.exit på fangstblokkene går ut av JVM og tillater ikke endelig blokker for å utføre.

6. Velge en statuskode

Vi kan overføre hvilket som helst heltall som en statuskode, men generell praksis er at a System.exit med statuskode 0 er normal og andre er unormale utganger.

Merk at dette bare er en “god praksis” og ikke er en streng regel som kompilatoren vil bry seg om.

Også, det er verdt å merke seg når vi påkaller et Java-program fra kommandolinjen at statuskoden tas i betraktning.

I eksemplet nedenfor når vi prøver å utføre SystemExitExample.class, hvis den går ut av JVM ved å ringe til System.exit med en statuskode som ikke er null, blir ikke følgende ekko skrevet ut.

java SystemExitExample && echo "Jeg blir ikke skrevet ut"

For å gjøre programmet vårt i stand til å kommunisere med andre standardverktøy, kan vi vurdere å følge standardkodene som de relaterte systemene bruker for å kommunisere.

For eksempel definerer UNIX-statuskoder 128 som standard for "ugyldig argument for å avslutte". Så det kan være lurt å bruke denne koden når vi trenger statuskoden for å bli kommunisert til operativsystemet. Ellers står vi fritt til å velge koden vår.

7. Konklusjon

I denne opplæringen diskuterte vi hvordan System.exit fungerer når du skal bruke den, og hvordan du bruker den.

Det er en god praksis å bruke unntakshåndtering eller vanlige returuttalelser for å avslutte et program når du arbeider med applikasjonsservere og andre vanlige applikasjoner. Bruk av System.exit metoden passer bedre for skriptbaserte applikasjoner eller hvor som helst statuskodene tolkes.

Du kan sjekke ut eksemplene i denne artikkelen på GitHub.


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