2010-01-22 14 views

Respuesta

12

sería ser atrapado por el primero, pero también lo harían un montón de otras excepciones. No deberías atrapar más de lo que realmente quieres.

La segunda es mejor si realmente tiene de atraparlo ... pero por lo general esto indica un error en el código de llamada. A veces este es un caso de otro método más arriba que no valida sus argumentos, etc. En un mundo ideal, cada vez que se lanza IllegalArgumentException debe haber una manera para que la persona que llama valide el valor antes de pasarlo, o llame a un versión que fallará de manera no excepcional (por ejemplo, el patrón TryParse en .NET, que es ciertamente más difícil en Java sin los parámetros out). Ese no es siempre el caso, pero cada vez que obtienes un IllegalArgumentException vale la pena comprobar si podría evitarlo comprobando los valores antes de llamar al método.

0

Realmente depende del caso en cuestión, o bien es correcto en sí mismo. Sin limitar el alcance de la pregunta, es un poco difícil dar un ejemplo de "mejor uso".

3

Debe mantenerse alejado de catch (Exception), ya que de esa manera atrapará cada posible excepción. Si realmente solo espera el IllegalArgumentException y maneja ese caso, no debe ampliar ese alcance; mejor agregar más bloques de captura para otros tipos de excepciones, entonces.

7

No debe manejar una IllegalArgumentException. Es porpose informar al desarrollador que ha llamado a un método con argumentos incorrectos. La solución es llamar el método con otros argumentos.

Si tiene que atraparla se debe utilizar

catch(IllegalArgumentException e) 
+0

A menos que la biblioteca que lanza es necesario volver a examinar la excepción en un nivel superior antes de que salga hacia arriba a la persona que llama. – tar

Cuestiones relacionadas