2013-02-13 18 views
8

Se voglio verificare se sono presenti alcune precondizioni per eseguire un programma java quale è il migliore?
fare: System.exit(1);Come arrestare un programma java se viene determinato che non dovrebbe essere eseguito?

o gettare un RuntimeException in main per terminare il thread principale? (Non ci sono altri thread in esecuzione ancora)

+2

Uscire personalmente con garbo piuttosto che lanciare un'eccezione. –

+0

Suppongo che dipenda da chi è l'utente del tuo programma e da come lo vuoi avvisare. Se il tuo programma è solo un servizio, vorrei andare con l'opzione System.exit(), poiché non vorrei avere eccezioni non necessarie nei miei log. Se il tuo programma ha una GUI in un modo qualsiasi, dovrai avvisare l'utente in modo appropriato, quindi qualsiasi tipo di eccezione dovrebbe essere catturato e una finestra di dialogo dovrebbe spiegare all'utente finale perché il programma si è fermato. – nikkatsa

risposta

9

Idealmente si sospendere l'discussioni con grazia. System.exit(1) funziona anche, ma è meglio se i tuoi thread vengono segnalati che devono interrompere ciò che stanno facendo e terminare terminando ciò che stanno facendo (cioè eseguendo il loro metodo fino alla fine). Dipende ovviamente dal tuo design.

Lanciare un RuntimeException sembra troppo spiacevole e potrebbe portare a comportamenti che in realtà non si desidera.

1

Non avendo più informazioni rispetto a quello che hai postato vorrei fare qualcosa di simile:

public static void main(String[] args) { 
    boolean precondition = ... // determine your precondition here 
    if (precondition) { 
     // run program 
    } else { 
     System.out.println("Preconditions not satisfied."); 
    } 
} 
+0

Quali altre informazioni sarebbero necessarie? Voglio verificare se alcune condizioni si applicano e se non si termina la discussione principale. – Jim

+0

@Jim: Quindi puoi farlo nel modo indicato nella mia risposta. – jlordo

+0

Sì, se la condizione non viene soddisfatta, il programma passerà all'ultima riga (messaggio di stampa) e terminerà – kiedysktos

1

È meglio chiamare exit poiché vengono utilizzate eccezioni per aiutarti a rilevare gli errori nel flusso di programmazione e gestirli di conseguenza.

Dal punto di vista di un utente che ha la stampa applicazione per System.err i problemi e poi chiudendo con grazia è molto più intuitivo di vedere una traccia dello stack o altre notazioni codice come EXCEPTION che non dovrebbero essere tenuti a capire.

2

Se si desidera una traccia di stack, andare con RuntimeException, se System.exit (1) è più pulito.

1

O è buono, ma preferirei utilizzare lo System.exit() in quanto lo RuntimeException potrebbe essere considerato fuorviante.

0

Non forzare mai l'uscita. Programmate il vostro metodo runtime in un modo che consenta alla vostra applicazione di esaurire i metodi e chiuderla da sola. Suggerisco di disegnare un grafico prima di qualsiasi applicazione strutturale.

Problemi correlati