IllegalArgumentException
- это стандарт, а не пользовательское исключение.Обычно в качестве аргумента используется NullPointerException
, если аргумент равен null
, а это не должно быть.
В общем случае предпочтительнее использовать стандартные исключения, если они подходят для вашего особого случая.См. Также пункт 60 в «Effective Java 2nd edition» («Поддерживайте использование стандартных исключений»).Одним из преимуществ этого является то, что вы можете написать один обработчик для схожих условий, которые могут возникнуть как в вашем собственном коде, так и в используемых вами библиотеках.
Чтобы различать исключения, вы должны использовать строковое сообщение, которое они несут,Кроме того, трассировка стека покажет, было ли исключение создано из вашего собственного кода или из другого кода.Нет необходимости в дополнительном классе исключений.
Один из случаев, когда может быть разумным создать собственный класс исключений, - это когда вам нужно исключение для переноса дополнительной информации об исключительном состоянии, которое оно указывает.В этом случае вы все равно должны извлечь исключение из соответствующего стандартного класса, чтобы можно было написать один обработчик, который обрабатывает исключения для аналогичных условий, поступающих как из вашего собственного кода, так и из используемых вами библиотек.
См. Также Preconditons
служебный класс от Google.В частности, checkNotNull()
служебный метод, который также выдает NullPointerException
, когда его аргумент равен null
.