Когда следует создавать исключение IllegalArgumentException?
Я обеспокоен тем, что это исключение времени выполнения, поэтому его следует использовать с осторожностью.
Стандартный вариант использования:
void setPercentage(int pct) {
if( pct < 0 || pct > 100) {
throw new IllegalArgumentException("bad percent");
}
}
Но похоже, что это вынудит следующий дизайн:
public void computeScore() throws MyPackageException {
try {
setPercentage(userInputPercent);
}
catch(IllegalArgumentException exc){
throw new MyPackageException(exc);
}
}
Чтобы вернуть его в статус проверенного исключения.
Хорошо, но давайпойдем с этим. Если вы дадите неправильный ввод, вы получите ошибку во время выполнения. Итак, во-первых, этоНа самом деле это довольно сложная политика для единообразной реализации, потому что вам может потребоваться сделать совершенно противоположное преобразование:
public void scanEmail(String emailStr, InputStream mime) {
try {
EmailAddress parsedAddress = EmailUtil.parse(emailStr);
}
catch(ParseException exc){
throw new IllegalArgumentException("bad email", exc);
}
}
И хуже - при проверке0