2010-01-22 2 views

ответ

12

Это будет быть пойман первым, но так будет куча других исключений. Вы не должны ловить больше, чем хотите.

Второй лучше, если вы действительно есть поймать его ... но обычно это указывает на ошибку в коде вызова. Иногда это относится к другому методу, выше которого не выполняется проверка его аргументов и т. Д. В идеальном мире в любое время, когда выбрано IllegalArgumentException, должен быть способ, чтобы вызывающий мог проверить значение перед его передачей или вызвать версия, которая завершится неудачей нестандартным образом (например, шаблон TryParse в .NET, который, по общему признанию, сложнее в Java без параметров out). Это не всегда так, но всякий раз, когда вы получаете IllegalArgumentException, стоит проверить, можете ли вы избежать этого, проверив значения перед вызовом метода.

0

Это действительно зависит от того, что находится под рукой, либо само по себе является правильным. Не сужая круг вопросов, немного сложно привести пример «наилучшего использования».

3

Вы должны держаться подальше от catch (Exception), так как вы поймаете каждые возможно исключение. Если вы действительно только ожидаетеIllegalArgumentException и обрабатываете этот случай, вы не должны расширять эту область; лучше добавить больше блоков catch для других типов исключений.

7

Вы не должны обрабатывать исключение IllegalArgumentException. Это должно сообщить разработчику, что он вызвал метод с неправильными аргументами. Решение состоит в том, чтобы вызвать метод с другими аргументами.

Если вы должны поймать его, вы должны использовать

catch(IllegalArgumentException e) 
+0

UNLESS библиотеки, которая бросает ему нужно пересмотреть исключение на более высоком уровне, прежде чем он выходит вверх к абоненту. – tar

Смежные вопросы