Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123

Непонятен смысл 'throws'

21.05.2017, 04:56. Показов 785. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код:
Java
1
2
3
4
5
6
7
8
9
10
11
public class Off {
    public static int area(int width, int height) {
    if (width < 0 || height < 0) {
        throw new IllegalArgumentException("Negative sizes: w = " + width + ", h = " + height);
    }
    return width * height;
    }
    public static void main(String[] args) {
        int s = area(-1, 2);
    }
}
И вот код:
Java
1
2
3
4
5
6
7
8
9
10
11
public class Off {
    public static int area(int width, int height) {
    if (width < 0 || height < 0) {
        throw new IllegalArgumentException("Negative sizes: w = " + width + ", h = " + height);
    }
    return width * height;
    }
    public static void main(String[] args) throws IllegalArgumentException {
        int s = area(-1, 2);
    }
}
И чем мне помог trows, если все работает так же?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2017, 04:56
Ответы с готовыми решениями:

Непонятен смысл некоторых строк программы
Есть такой код: Sub intnag() Dim b() As Single ReDim b(1 To 20, 1 To 20) Dim R() As Single ReDim R(1 To 20, 1 To 20) For i =...

Непонятен смысл не которых строк в коде - объяснить (дифференцирование функций)
Прокомментируйте пожалуйста следующие номера строк: 9,12,18-21,25,26,39,44,45 (объясните пожалуйста их функциональный смысл...не могу...

Throws
Здравствуйте! Собственно, вопрос нубский, но сам что-то не особо разобрался. Что делает этот код при реализации метода интерфейса в...

7
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
21.05.2017, 08:40
Когда вы в методе указываете что он throws какой то эксепшн, то как бы програмист использующий ваш метод выдит что он может что то бросить, и может обработать этот эксепшн(обезательно если checked) или же пробросить его дальше. Во втором примере main пробрасывает эксепшн дальше и его никто не обрабатывает. Собственно во втором примере если будет эксепшн то мэйн кинет его дальше в JVM и она упадёт.
0
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
21.05.2017, 13:21  [ТС]
То есть другой программист увидит это, и сможет написать что то типа catch(какой нибудь exeption) {/****/}?
Но тогда если это еще можно представить для левой функции, то зачем это надо для main?
0
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
21.05.2017, 13:43
Ты попробуй вместо
Java
1
throw new IllegalArgumentException("Negative sizes: w = " + width + ", h = " + height);
выбросить
Java
1
throw new Exception("Negative sizes: w = " + width + ", h = " + height);
и тебя попросят эту ошибку обработать либо внутри метода, либо в коде, вызывающем метод.
0
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
21.05.2017, 14:48  [ТС]
Я сделал простой main и заменил, и пишет, что cannot find symbol throw new Exeption
Но почему с IllegalArgumentException работает?
0
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 207
Записей в блоге: 53
21.05.2017, 18:49
В данном случае,throw будет показывать что что то пошло не так-это ошибка и аргументы не подходят.throws в сигнатуре показывает что надо обрабатывать исключение-что то с ним делать чтобы прога не закрылась.
0
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
22.05.2017, 14:21  [ТС]
Ну все равно не понятно, почему с IllegalArgumentException работает
0
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 207
Записей в блоге: 53
22.05.2017, 22:51
Так работает
Java
1
2
3
4
5
6
7
8
9
10
11
public class CB {
    public static int area(int width, int height) throws Exception {
    if (width < 0 || height < 0) {
        throw new Exception("Negative sizes: w = " + width + ", h = " + height);
    }
    return width * height;
    }
    public static void main(String[] args) throws Exception {
        int s = area(-1, 2);
    }
}
IllegalArgumentException наследуется от RuntimeException,и его не надо пробрасывать и ловить для обработки,он сразу прерывает прогу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2017, 22:51
Помогаю со студенческими работами здесь

Оператор throws
Прочитал что его не надо писать если метод выбрасывает только RuntimeException(и его ветку) и Error. Но если например метод выбрасывает...

If a function throws an exception?
If a function throws an exception _____ . Question options: A) it must be caught in that function. B) it may be caught in that...

Main throws Exeption
Когда мы указываем что метод main бросает проверяемое исключение, то кто тогда его &quot;ловит&quot; если main - главный метод?

Ошибка в throws IOException
В чём заключается причина ошибки, в следующем коде. import java.io.*; public class Main { public static void main(String...

JpaRepository throws NPE on save
Spring boot. Описал entity. Создал репозиторий @Repository public interface MyEntityRepository extends JpaRepository&lt;MyEntity,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru