Механизм исключений является ценным, поскольку это единственный способ получить индикатор состояния в сочетании со значением ответа. Кроме того, индикатор состояния стандартизирован. Если есть ошибка, вы получаете исключение. Таким образом, вам не нужно думать об индикаторе ошибок самостоятельно.
Противоречие происходит не столько с исключениями, сколько с Проверенными исключениями (например, теми, которые вы должны поймать или объявить).
Лично я чувствую, что вы выбрали один из примеров, где исключения действительно ценны. Это обычная проблема, когда пользователь вводит неправильное значение, и обычно вам нужно будет вернуть пользователю правильное значение. Обычно вы не возвращаетесь к значению по умолчанию, если спрашиваете пользователя; это дает пользователю впечатление, что его ввод имеет значение.
Если вы не хотите иметь дело с исключением, просто оберните его в RuntimeException (или производный класс), и это позволит вам игнорировать исключение в вашем коде (и убивать ваше приложение, когда оно возникает; это тоже нормально ).
Некоторые примеры того, как я буду обрабатывать исключения NumberFormat:
В данных конфигурации веб-приложения:
loadCertainProperty(String propVal) {
try
{
val = Integer.parseInt(userdata);
return val;
}
catch (NumberFormatException nfe)
{ // RuntimeException need not be declared
throw new RuntimeException("Property certainProperty in your configuration is expected to be " +
" an integer, but was '" + propVal + "'. Please correct your " +
"configuration and start again");
// After starting an enterprise application the sysadmin should always check availability
// and can now correct the property value
}
}
В графическом интерфейсе:
public int askValue() {
// TODO add opt-out button; see Swing docs for standard dialog handling
boolean valueOk = false;
while(!valueOk) {
try {
String val = dialog("Please enter integer value for FOO");
val = Integer.parseInt(userdata);
return val;
} catch (NumberFormatException nfe) {
// Ignoring this; I don't care how many typo's the customer makes
}
}
}
В веб-форме: вернуть форму пользователю с полезным сообщением об ошибке и возможностью
правильный. Большинство платформ предлагают стандартизированный способ проверки.