2012-08-31 18 views
7

¿Hay una clase de excepción apropiada para argumentos de línea de comando no válidos en la API de Java o tengo que crear la mía? Intenté buscar uno pero no puedo encontrar ninguno en la API.Java Invalid Command Line Arguments Excepción

Esto es para una tarea, así que no puedo usar bibliotecas de terceros para el análisis de línea de comandos.

Respuesta

4

La mejor manera de manejar parámetros desconocidos de línea de comando o combinaciones que no tienen sentido para el programa es mostrar un mensaje de error y ofrecer una salida de usos.

Personalmente, dependiendo de la complejidad de la línea de comandos, crearé un método llamado "uso" (generalmente estático) que puede tener un mensaje de error opcional que se le pase.

Al analizar los parámetros de línea de comandos pasados ​​al programa, llamaré a este método y saldré, mediante un indicador o directamente, o tendré usage método de salida de llamada para mí.

Pero eso es sólo conmigo

0

Los argumentos de la línea de comandos vienen como String[]. Si espera que la entrada esté en una determinada forma o en cierto orden, puede lanzar una Excepción que cree usted mismo para manejarla (aunque, lanzar una excepción terminaría el programa; tendría que manejarlo con elegancia si eso es requerido).

9

La mayoría de las veces, cuando los argumentos recibidos no son válidos, es una expresión común lanzar un IllegalArgumentException.

clase pública IllegalArgumentException extiende RuntimeException

Lanzado para indicar que un método se ha pasado un argumento ilegal o inapropiada .

+1

que tuvo en cuenta el uso de este, pero pensé que se supone RuntimeExceptions (excepciones no marcado) para reflejar un problema que el programador ha hecho mal, mientras que las excepciones controladas serían usados ​​para cosas fuera del control del programador . ¿O esto solo importa al diseñar las API? – Michael

+3

Tiendo a utilizar excepciones sin marcar para situaciones en las que su programa no puede recuperarse en tiempo de ejecución. Un argumento inválido pasado a un método es un caso así, es un error del programador. Por ejemplo, cuando intenta crear una instancia de una 'ArrayList' con una capacidad inicial * negativa *, arrojará una' IllegalArgumentException'. ¿Por qué? Porque se supone que no debe recibir eso, y no puede funcionar con una capacidad negativa; es un error del programador Aquí hay un enlace que trata este tema http://www.javapractices.com/topic/TopicAction.do?Id=129. –

+0

Además, si utiliza una excepción marcada, cada método que llame al suyo necesita detectar esta excepción. Imho, esto es algo extraño, porque básicamente reconoces que puedes tener errores en tu código que hacen que pase * valores * inválidos/argumentos a otro método. Y cuando esto sucede, no hay nada que puedas hacer al respecto, pero arregla el * error * que causó esto. –

Cuestiones relacionadas