вызов метода с проверенным исключением - PullRequest
2 голосов
/ 26 мая 2011

Как я знаю, если метод выдает исключение, Java-компилятор заставляет вызывающего этого метода перехватить это исключение.

Я вижу, что parseInt бросает NumberFormatException:

public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s,10);

Так почему я могу назвать это без перехвата исключения:

String str = "5";
int n = Integer.parseInt(str);

Ответы [ 2 ]

8 голосов
/ 26 мая 2011

Поскольку NumberFormatException расширяет RuntimeException - исключения среды выполнения считаются «непроверенными», см. Javadoc из RuntimeException:

RuntimeException является суперклассомте исключения, которые могут быть выброшены во время нормальной работы виртуальной машины Java.

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

Вот статья из руководства по Java , объясняющая, как эта функция подразумевается и почему она существует

0 голосов
/ 26 мая 2011

Важным отличием является то, что любое исключение, которое выходит из исключения времени выполнения, не нужно перехватывать, как это делает любое другое исключение. Исключения, которые расширяют RuntimeException, могут создаваться в любое время, например NullPointerException или ConcurrentModificationException, и поэтому они не могут ожидать, что вы попытаетесь перехватить их все.

...