Использование команды throws в java

Я знаю, что подобные вопросы есть повсюду, но я много читал об этом и до сих пор не могу понять, что делает команда "throws". Теперь я буду более конкретным:

Итак, один из примеров, который я видел, был Вот этот со следующим кодом:

public class CatchThrow {

private static void throwsMethod() throws NumberFormatException {
    String  intNumber = "5A";

    Integer.parseInt(intNumber);
}

private static void catchMethod() {
    try {

        throwsMethod();

    } catch (NumberFormatException e) {
        System.out.println("Convertion Error");
    }

}

public static void main(String[] args) {
    // TODO Auto-generated method stub

    catchMethod();
}

}

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

Я использую Eclipse IDE версии 4.7.2.

Вам нужно прочитать о различии между отмеченными и непроверенными исключениями в Java.

ernest_k 31.05.2018 22:34

Возможно, вы захотите взглянуть на этот ответ: stackoverflow.com/a/27763869/7123665

Riiverside 31.05.2018 22:34

Возможный дубликат Различия между Runtime / Checked / Unchecked / Error / Exception

Riiverside 31.05.2018 22:35

Да, это плохой пример. Есть два вида исключений: те, где вам нужен throws (отмеченные исключения), и те, где вам не нужен (непроверенные исключения). NumberFormatException - непроверенный.

Dawood ibn Kareem 31.05.2018 22:35
stackoverflow.com/questions/11589302/…
Shashwat Kumar 31.05.2018 22:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
227
2

Ответы 2

Обычно ваша функция завершается в конце функции или оператора возврата.

Однако функция также может завершиться, когда достигнет оператора throw. Если исключение является подклассом Exception, вызывающая функция должна окружить вызов функции блоком try { } catch { }. Если исключение подкласса RuntimeException, вы можете по выбору заключить вызов функции в блок try catch.

Если вы посмотрите на JavaDoc для NumberFormatException: https://docs.oracle.com/javase/7/docs/api/java/lang/NumberFormatException.html увидит подклассы RuntimeException. Это означает, что ваш блок try-catch необязателен. Разница между этими двумя программами заключается в следующем: с блоком try-catch вы получите Convertion Error, напечатанный на консоли, без него вы увидите полную трассировку стека. Это часто называют «проглатыванием исключения».

Итак, в основном, если возникает исключение, и вы не хотите обрабатывать это исключение там, в этом случае вы используете ключевое слово 'throw', чтобы просто выбросить исключение, если оно возникает.

Пример: Здесь, в throwsMethod (), вы не заботитесь об обработке исключений, то есть не используете блоки try (), catch (), вы просто бросаете их, если возникает какое-либо исключение. И вы попадете в блок catch (), если в вашем throwsMethod () возникнет исключение.

Чтобы получить лучшее представление, вы должны прочитать отмеченные и неподтвержденные исключения в Java. Для проверенных исключений (происходящих во время компиляции) мы используем ключевое слово throw, а для Unchecked (время выполнения) мы используем try () catch ().

Пример: NumberFormatException - исключение Unchecked, IOException - исключение Checked.

Прочтите это для справки: https://www.geeksforgeeks.org/checked-vs-unchecked-exceptions-in-java/

Другие вопросы по теме