Pages: [1]   Go Down
Print
Author Topic: DIFFERENZA TRA System.exit(0) e System.exit(1)  (Read 14276 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« on: 28-07-2009, 19:04:14 »

Ciao ragazzi, mi sapreste spiegare qual'è la differenza tra System.exit(0) e System.exit(1).
Ho già letto la javadoc, e il numero 1 dato come argomento, dovrebbe servire a fare uscire nei casi anormali.
E' vero ciò che dico?

P.S.
Per chi si è imbattuto a usare la FileDialog, praticamente dopo avere fatto click su "OK" o "ANNULLA" il programma non termina dandomi "exit code 0", ma va in loop infinito.
La soluzione potrebbe essere appunto quella di mettere la System.exit(1)?

Grazie per vostre risposte.
ciao
Logged
francesco89b
Apprendista Forumista
**
Offline Offline

Posts: 169



« Reply #1 on: 28-07-2009, 20:32:31 »

entrambi dovrebbero interrompere il programma uno ritornandoti exit code 0 e l'altro 1 
Logged

Ogni mia affermazione è sempre da considerarsi con un ampio margine di errore X0
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #2 on: 29-07-2009, 00:15:06 »

Prima di rispondere a questa domanda è necessario introdurre il concetto di "codice di uscita".

Quando un programma termina, è previsto in tutti i sistemi operativi che tale programma lasci una traccia di se indicando un numero, che per sua natura, quando fu introdotto, era noto anche come "codice di errore".
Questo numero è un intero positivo, con ovviamente un limite (essendo i calcolatori macchine finite), che penso (ma non sono sicuro) sia attorno a 232.

Se un programma termina senza che ha incontrato problemi, il codice di errore dev'essere zero (0).
Se un programma termina avendo incontrato problemi, il codice deve essere maggiore di zero (1, 2, 3...).

In questo modo, script o altri programmi che avviano un certo programma (o anche l'utente finale stesso) possono sapere se tutto è andato bene o se qualcosa è andato storto.

Ovviamente, siccome nessuno ci prende con la pistola, possiamo gestire questo numero come vogliamo, a patto di limitare l'eventuale prevista interoperabilità con script e programmi vari.

Un esempio sensato in cui questo numero può essere usato al di fuori della normale logica (0 = tutto ok; >0, errore) che mi viene in mente è quello di fare un modo che venga mostrata una interfaccia di scelta all'utente e l'ordinale della scelta fatta venga restituito sotto forma di questo numero (magari 0 indica una non-scelta, come chiudere la finestra senza scegliere alcunché).

Su sistemi Windows a partire da XP (ma penso anche sugli altri con kernel NT, anche se non ne sono sicurissimo) è possibile verificare il codice di errore (o di uscita) lasciato da un programma che si è appena chiuso e che è stato avviato in un prompt dei comandi e che rimanga aperto in tale prompt dei comandi (non come le applicazioni solo GUI), direttamente nel Prompt dei comandi stesso, tramite la variabile %ERRORLEVEL%.

Ora passiamo alla tua domanda:
Per chi si è imbattuto a usare la FileDialog, praticamente dopo avere fatto click su "OK" o "ANNULLA" il programma non termina dandomi "exit code 0", ma va in loop infinito.
La soluzione potrebbe essere appunto quella di mettere la System.exit(1)?
Non so di che stai parlando, magari se posti il sorgente (o lo alleghi come file a un messaggio tramite link apposito) che ti da il problema, possiamo essere più esaurienti nelle risposte.
Così, su due piedi, posso dirti con certezza che l'eventuale loop-infinito in cui sembra che il tuo programma cada non è affatto causato dallo scrivere un numero diverso come parametro di System.exit ().
E, sempre su due piedi, mi viene in mente che usare classi che usano la GUI a un certo livello di complessità/potenzialità introduce nuovi thread, che non necessariamente terminano quando termina il main del tuo programma (che sta nel suo proprio thread).
 
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
LtWorf
Forumista Esperto
****
Offline Offline

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #3 on: 29-07-2009, 00:54:17 »

Il limite dell'exit code è molto più basso: 127.

nella bash l'exit code va nella variabie $?
Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« Reply #4 on: 29-07-2009, 09:05:52 »

ragazzi, vi ringrazio prima di tutto per avermi risposto;

Code:

per quanto riguarda la FileDialog se non sapete a cosa serve, praticamente apre la rinomata Finestra di Dialogo che
serve appunto per aprire un file oppure salvarlo. Sicuramente l'avrete incontrata.


cmq credo di avere risolto il problema, se ne dovessi trovare altri mi riconsulterò con voi.

Adesso volevo chiedervi un altra cosa: conoscete per caso un metodo java che rinomini il nome di un file?

Es.:

 BufferedReader file = new BufferedReader( new FileReader("miofile.txt") );
 
 volendo cambiare il nome di questo file per esempio in "miofilePROVA.txt" qual'è il metodo che mi consente di   poterlo fare? ho letto che esiste il "renameTo(...)" ma funziona solo per oggetti di tipo File. Sapreste consigliarmi altro?

Grazie.
Ciao.
« Last Edit: 29-07-2009, 09:09:39 by gam » Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #5 on: 29-07-2009, 15:42:55 »

Adesso volevo chiedervi un altra cosa: conoscete per caso un metodo java che rinomini il nome di un file?

Es.:

 BufferedReader file = new BufferedReader( new FileReader("miofile.txt") );
 
 volendo cambiare il nome di questo file per esempio in "miofilePROVA.txt" qual'è il metodo che mi consente di   poterlo fare? ho letto che esiste il "renameTo(...)" ma funziona solo per oggetti di tipo File. Sapreste consigliarmi altro?

Grazie.
Ciao.
Non puoi rinominare un file aperto e bloccato.
Chiudi il file, usa tranquillamente il metodo renameTo su un oggetto File che si riferisca a tale file (oramai chiuso) e poi in caso riapri il file in un nuovo FileReader/BufferedReader.
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: