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