Mi piacerebbe sapere la differenza tra i seguenti in Java
System.exit(0);
System.exit(-1);
System.exit(1);
Quando devo usare il codice sopra in modo appropriato?
Mi piacerebbe sapere la differenza tra i seguenti in Java
System.exit(0);
System.exit(-1);
System.exit(1);
Quando devo usare il codice sopra in modo appropriato?
Risposte:
Il parametro di uscita deve essere qualificato se l'esecuzione del programma è andata a buon fine. È una sorta di eredità dai vecchi linguaggi di programmazione in cui è utile sapere se qualcosa è andato storto e cosa è andato storto.
Il codice di uscita è
0
quando l'esecuzione è andata bene;1
, -1
, whatever != 0
Quando si è verificato un errore, è possibile utilizzare valori diversi per diversi tipi di errori.Se sono corretto i codici di uscita erano solo numeri positivi (intendo in UNIX) e in base all'intervallo:
1-127
sono codici definiti dall'utente (così generati chiamando exit(n)
)128-255
sono codici generati dalla terminazione a causa di diversi segnali unix come SIGSEGV o SIGTERMMa non penso che ti debba interessare durante la programmazione su Java, sono solo un po 'di informazioni. È utile se prevedi di far interagire i tuoi programmi con strumenti standard.
java MyApp && echo success
stamperà "successo" se MyApp ha un codice di uscita pari a 0, ovvero se chiama exit(0)
o raggiunge semplicemente la fine del metodo principale senza errori.
Zero
=> Tutto ok
Positive
=> Qualcosa che mi aspettavo potrebbe potenzialmente andare storto è andato storto (riga di comando errata, impossibile trovare il file, impossibile connettersi al server)
Negative
=> Qualcosa che non mi aspettavo affatto è andato storto (errore di sistema - eccezione imprevista - terminazione forzata esternamente, ad es. kill -9
)
(i valori maggiori di 128 sono in realtà negativi, se li consideri come binari con segno a 8 bit o complemento a due)
C'è un sacco di buoni codici di uscita standard qui
kill -15
) spesso generano un codice di uscita 128+signal
, ma (a parte 9) possono essere gestiti e restituisce un codice di uscita diverso. La -
in kill -15
è segna il numero come un segnale e non un pid, esso non rendono il negativo del segnale.
System.exit(-1)
e poi nella tua shell echo $?
ottieni '255'. Questo è il motivo per cui ho detto che i numeri negativi sono errori di sistema, non a causa del '-' nel parametro kill. Pensavi seriamente che è quello che pensavo? Ma grazie per aver spiegato il meccanismo con cui Bash costruisce questi codici.
System.exit(system call)
termina la macchina virtuale Java attualmente in esecuzione avviando la sua sequenza di spegnimento. L'argomento funge da codice di stato .
Per convenzione, un codice di stato diverso da zero indica una chiusura anomala.
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
Maggiori informazioni su Java
Su sistemi Unix e Linux, 0
per esecuzioni riuscite 1
o superiore per esecuzioni fallite.
EXIT_*
non esiste in Java.
Un codice di stato di uscita diverso da zero, in genere indica una chiusura anomala. se n != 0
, spetta al programmatore applicare un significato alle varie n.
Da https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .
exit(0)
generalmente utilizzato per indicare la risoluzione corretta. exit(1)
oo exit(-1)
qualsiasi altro valore diverso da zero indica la chiusura non riuscita in generale.
Ecco la risposta
System.exit(0);// normal termination - Successful - zero
System.exit(-1);//Exit with some Error
System.exit(1);//one or any positive integer // exit with some Information message
Un buon risultato è che qualsiasi codice di errore> 255 verrà convertito nel codice di errore% 256. Si dovrebbe prestare particolare attenzione a questo se utilizzano un codice di errore personalizzato> 255 e si aspettano l'esatto codice di errore nella logica dell'applicazione. http://www.tldp.org/LDP/abs/html/exitcodes.html
la differenza dei numeri inseriti in system.exit () è spiegata in altre risposte. ma la DIFFERENZA REALE è che System.exit () è un codice che viene restituito al processo di invocazione. Se il programma viene invocato dal sistema operativo, il codice di ritorno dirà al sistema operativo che se system.exit () restituiva 0 di tutto ciò che era ok, ma se non qualcosa è andato storto, allora potrebbero esserci dei gestori nel processo principale
Come altri rispondono 0
significando successo, altrimenti.
Se si utilizza il file bat (finestra) System.exit(x)
avrà effetto.
Codice java (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
file bat:
java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
System.exit (0) per convenzione, un codice di stato diverso da zero indica una chiusura anomala.
System.exit (1) -Significa terminazione non riuscita a causa di un errore
class calc{
public static void main(String args[])
{
int a, b, c;
char ch;
do{
Scanner s=new Scanner(System.in);
System.out.print("1. Addition\n");
System.out.print("2. Substraction\n");
System.out.print("3. Multiplication\n");
System.out.print("4. Division\n");
System.out.print("5. Exit\n\n");
System.out.print("Enter your choice : ");
ch=s.next().charAt(0);
switch (ch)
{
case '1' :
Addition chose1=new Addition();
chose1.add();
break;
case '2' :
Substraction chose2=new Substraction();
chose2.sub();
break;
case '3' :
Multiplication chose3= new Multiplication();
chose3.multi();
break;
case '4' :
Division chose4=new Division();
chose4.divi();
break;
case '5' :
System.exit(0);
break;
default :
System.out.print("wrong choice!!!");
break;
}
System.out.print("\n--------------------------\n");
}while(ch !=5);
}
}
Nel codice sopra quando system.exit (0); e quando premo il caso 5 esce correttamente ma quando uso System.exit (1); e premo il caso 5 esce con errore e di nuovo quando provo con il caso 15 esce correttamente da questo, ho saputo che, quando mettiamo qualsiasi argomento interno, lo specifica, prende il personaggio da quella posizione, cioè se metto (4) che significa prendere il 5 ° carattere da quella stringa se è (3), allora significa prendere il 4 ° carattere da quella stringa inserita