2012-08-31 9 views
7

Esiste una classe di eccezione appropriata per argomenti della riga di comando non validi nell'API Java o devo creare il mio? Ho provato a cercarne uno ma non riesco a trovarlo nell'API.Argomenti riga di comando Java non validi Eccezione

Questo è per un compito quindi non posso usare le librerie di terze parti per l'analisi della riga di comando.

risposta

4

Il modo migliore per gestire parametri o combinazioni di riga di comando sconosciuti che non hanno senso per il programma è visualizzare un messaggio di errore e offrire un output di utilizzo.

Personalmente, a seconda della complessità della riga di comando, creerò un metodo chiamato "utilizzo" (di solito statico) che può avere un messaggio di errore facoltativo passato ad esso.

Durante l'analisi dei parametri della riga di comando passati al programma, chiamerò questo metodo e uscirò, tramite un flag o direttamente, oppure avrò il metodo di uscita di chiamata usage per me.

Ma questo è solo me

0

Gli argomenti della riga di comando si presentano come String[]. Se ti aspetti che l'input sia in una certa forma o in un certo ordine, puoi lanciare un'eccezione che crei per affrontarla (anche se lanciare un'eccezione interromperebbe il programma, dovresti gestirlo con garbo se è richiesto).

9

La maggior parte delle volte, quando gli argomenti ricevuti non sono validi, è un linguaggio comune lanciare un IllegalArgumentException.

public class IllegalArgumentException estende RuntimeException

gettato per indicare che un metodo è stato superato un argomento illegale o inappropriato.

+1

ho fatto considerare l'utilizzo di questo, ma ho pensato che RuntimeExceptions (eccezioni non controllate) devono rispecchiare un problema che il programmatore ha fatto male mentre eccezioni controllate sarebbero stati utilizzati per cose al di fuori del controllo del programmatore . O questo importa solo quando si progettano le API? – Michael

+3

Tendo ad utilizzare le eccezioni non controllate per le situazioni in cui il programma non può essere ripristinato in fase di runtime. Un argomento non valido passato a un metodo è un caso simile, si tratta di un errore del programmatore. Ad esempio, quando si tenta di creare un'istanza di 'ArrayList' con una capacità iniziale * negativa *, si genera un 'IllegalArgumentException'. Perché? Perché non dovrebbe riceverlo, e non può funzionare con una capacità negativa; è un errore del programmatore. Ecco un link che tratta questo problema http://www.javapractices.com/topic/TopicAction.do?Id=129. –

+0

Inoltre, se si utilizza un'eccezione controllata, ogni metodo che chiama il proprio utente deve rilevare questa eccezione. Imho, questo è un po 'strano, perché in pratica stai riconoscendo che puoi avere errori nel codice che lo fanno passare * valori/argomenti non validi a un altro metodo. E quando ciò accade, non c'è nulla che tu possa fare al riguardo, ma correggi l'* errore * che ha causato ciò. –

Problemi correlati