Javac не жалуется на не перехватывающее исключение (Runtime Exception) - PullRequest
1 голос
/ 03 июля 2011

У меня есть это в классе:

/* parses a Value out of a String */
public static int parseValue(final String text) throws NumberFormatException {

    String cleanedValue = text.replace("-", "").replace(",", ".");
    return Math.round(Float.parseFloat(cleanedValue) * 100);
}

По какой-то причине javac не жалуется, что я не улавливаю исключение NumberFormatException в вызывающем коде.

Может кто-нибудь сказать мнепочему это?

Ответы [ 3 ]

4 голосов
/ 03 июля 2011

NumberFormatException является непроверенным исключением - это означает, что его не нужно перехватывать.Подробнее здесь, например: http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html

4 голосов
/ 03 июля 2011

В Java Docs NumberFormatException - это,

Брошенный, чтобы указать, что приложение попыталось преобразовать строку в один из числовых типов, но чтоСтрока не имеет соответствующего формата.

Просто посмотрите на структуру наследования, NumberFormatException происходит от RuntimeException, который компилятор не заставляет перехватывать эти исключения.Это не рекомендуетсяВам нужно перехватывать / объявлять только проверенные исключения.

java.lang.Object  
   java.lang.Throwable  
      java.lang.Exception
          java.lang.RuntimeException
              java.lang.IllegalArgumentException
                  java.lang.NumberFormatException 

Теперь метод не требуется для объявления в своем предложении throws любых подклассов RuntimeException, которые могутбыть брошенным во время выполнения метода, но не пойманным.

4 голосов
/ 03 июля 2011

NumberFormatException является подклассом RuntimeException. Компилятор не требует, чтобы такие исключения объявлялись или перехватывались - отчасти потому, что большое количество кода потенциально может выдавать такие вещи, как NullPointerException, поэтому, если бы нам всегда приходилось объявлять или отлавливать такие вещи, это привело бы к большому количеству постороннего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...