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