Как правильно обрабатывать исключение NumberFormatException, когда оно ожидается?

Я сделал бы

StartDate1.IsBetween(StartDate2, EndDate2) || EndDate1.IsBetween(StartDate2, EndDate2)

, Где IsBetween что-то как

    public static bool IsBetween(this DateTime value, DateTime left, DateTime right) {
        return (value > left && value < right) || (value < left && value > right);
    }
17
задан Erick Robertson 10 December 2010 в 15:09
поделиться

1 ответ

  • Есть ли метод, который я могу вызвать, который скажет мне, если Integer.parseInt () сгенерирует исключение NumberFormatEx перед его вызовом? Тогда у меня не будет проблем с регистрацией этого, так как это никогда не должно произойти.

К сожалению, нет. По крайней мере, не в основном Java API. Однако написать его легко - просто измените код ниже.

  • Если я просто не поймаю исключение, будет ли назначен валидный? Затем я просто инициализирую его значением, которое мне нужно, когда это не число, и не поймаю исключение.

Если вы не перехватите исключение, то стек будет разматываться до тех пор, пока не достигнет блока перехвата, который его обработает, или он полностью раскрутится и остановит поток. Фактически, переменная не будет назначена, но это не совсем то, что вам нужно.

  • Есть ли способ как-то явно пометить исключение, что меня это не волнует? Я думаю, что это будет что-то похожее на AWTEvent.consume (). Если так, то я сделаю это так, чтобы Google CodePro не воспринимал это как «незарегистрированный».

Может быть способ заставить CodePro игнорировать это конкретное предупреждение. Конечно, с помощью таких инструментов, как FindBugs и Checkstyle, вы можете отключить предупреждения в определенных местах. (РЕДАКТИРОВАТЬ: @Andy указала, как это сделать.)

Я подозреваю, что вам нужно что-то вроде пакета Commons lang, упомянутого @daveb. Довольно легко написать такую ​​функцию:

int parseWithDefault(String s, int def) {
    try {
        return Integer.parseInt(s);
    }
    catch (NumberFormatException e) {
        // It's OK to ignore "e" here because returning a default value is the documented behaviour on invalid input.
        return def;
    }
}
13
ответ дан 30 November 2019 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: