powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / [JAVA] Throws
15 сообщений из 15, страница 1 из 1
[JAVA] Throws
    #39190509
spider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений.

Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190521
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider13,

throws нужен, чтобы передать исключение вверх по иерархии, туда где дальнейшая логика строится на этом исключении
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190535
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13Зачем указывать эти исключения
ты прав. Подумать есть над чем.
В Delphi такой фигни нет...но Java более строго подходит соглашениям \ контрактам по коду.
В Delphi об исключениях компонента говорят устно тому кто будет использовать или пишут в комментариях.
imho
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190556
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений.
В случае с декларацией interface, компиллятор не может знать тип вероятного исключения.
И мы вручную указываем тип исключения как вариант возможного return value наверх
по стеку от класса который имплементирует наш интерфейс.

Кстати недавно в этом форуме был спор по поводу пользы или вреда checked exeptions.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190561
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ мы вручную указываем тип исключения как вариант возможного return value наверх
я привёл пример Delphi и меня это полностью устраивало.
- да, я там не всегда знал какое придёт наверх в мой слой БЛ. И не страдал от этого.
Всё равно на момент моей готовой процедуры я по писят раз проверял и тестировал все мыслимые случай райзе от нижнего слоя.
Разница только в том, что я вручную указывал в комментарии . Что может прийти IO Exception от файловой системы.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190716
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений.


Во-первых, при компиляции придется сканировать _все_ вызовы _всех_ методов, которые используются в нужном методе, и так по всему стеку вызовов. Мягко говоря, накладно.

Во-вторых, есть native методы, которые не просканируешь никак.

spider13Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял.

Таких примеров быть не может :) В том же .NET, например, прекрасно обходятся без throws.

Но исключение как часть контракта метода - это вполне в духе Java. Сначала разрабатывается API, а потом различные вендоры его имплементируют.

Если код разных вендоров будет выбрасывать совершенно разные исключения в одних и тех же ситуациях, это внесет большую путаницу при использовании, и, как следствие - пресловутый vendor lock-in.

Фиксированные типы исключений в контракте метода эту проблему устраняют.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190773
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений.

Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял.


в Java исключения делятся на контролируемые и произвольные (cheeked & unchecked).
произвольные невозможно предсказать и обработать как-то стандартно, и возникают они спонтанно. типичные примеры - NPE и нехватка памяти. такие исключения обрабатывать программно считается что бессмысленно.

также есть и контролируемые , это, наоборот, предсказуемые ситуации, которые могут возникнуть в каких-то конкретных ситуациях.
например, открываешь ты файл, а файла нет в данном месте, или нет к нему нужного доступа, или файл системный как в windows, и т. п.
В этих случаях в программе можно предусмотреть предопределенные действия, направленные на устранение этих проблем.

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

тут ключевая идея (на мой взгляд - дурацкая) Java в том, чтобы заставить пользователя класса обработать все такие случаи, и предусмотреть альтернативные варианты развития событий.

вот для этого и нужны throw. там ты можешь описать все checked exception, генерируемые данным кодом (функцией).
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190791
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivтут ключевая идея (на мой взгляд - дурацкая) Java в том, чтобы заставить
+1
вот это и сомнительно).
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39190797
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКстати недавно в этом форуме был спор по поводу пользы или вреда checked exeptions.

ссылочка на всякий случай
http://www.sql.ru/forum/1203838/podskazhite-chto-pochitat-pro-isklucheniya
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39191255
Марс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений.

Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял.

1)throws может быть в интерфейсе где кода нет по определению и соответственно компилятору сканировать нечего.В Яве очень много интерфейсов.
2)throws нужны не только для компилятора но и для чтения кода. Кто-то пишет правильные коментарии, кто-то тестирует код до посинения предусматривая все возможные ситуации. Кто-то нет. Ява заставляет (ок, не заставляет, но настаивает и помогает) оформлять эти "комментарии" официально в виде throws понятного и человеку и компилятору и IDE.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39191265
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МарсЯва заставляет (ок, не заставляет, но настаивает и помогает)
выключить эту фигню есть рубильник? Если нет, то заставляет)).
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39191281
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13Подскажите, в чем вообще смысл оператора throws?

смысл в том, чтобы обязать другого программиста (не тебя) обрабатывать то исключение, которые ты выбрасываешь в своем коде.
spider13Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений.

Компилятор может "просканировать" и "просканирует" и, более того, даст ошибку времени компиляции , если тот, другой засранец-программист проигнорирует твой приказ ему обрабатывать твои исключения.

spider13Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял.
Такого примера для программиста "далекого от ява" нельзя привести, так как нет прямых
аналогий такого поведения компилятора в других языках.
Но "идею" проиллюстрировать можно.
Вот сел ты писать "библиотечный компонент", которым в обязательном порядке будут пользоваться все остальные программисты мира.
В этом компоненте у тебя три метода - открыть ресурс, закрыть ресурс и записать в ресурс.
Написал ты первых два и сел за третий - записать в ресурс.
Ему в параметрах приходит идентификатор ресурса и строка, которую надо записать.
Пишешь ты код и получаешь внутри своего кода ошибочное состояние - запись почему-то не получилась.
Вот через throws ты заставляешь (через силу компилятора) программиста, использующего твой код, разбираться с тем, что и как надо делать дальше, когда в твоем коде не получилось.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39191297
Марс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123МарсЯва заставляет (ок, не заставляет, но настаивает и помогает)
выключить эту фигню есть рубильник? Если нет, то заставляет)).

Ну для особо свободолюбивых маньяков можно ловить все чекнутые эксепшны (да чего там чекнутые, сразу Throwable), заворачивать в рантайм эксепшн и выбрасывать наверх без throws o.0

Это из той же серии что детей заставляют чистить зубы. Да, это ущемление свободы и да , обойтись можно и без этого. Но имхо немного дисциплины большинству не повредит , а ява много внимания уделяет именно совместной разработке кода.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39191301
Марс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример про чистку зубов наверно некорректен - зубы мы чистим в том числе для себя, а throws пишем для других. Хотя с учетом того что я собственный код написанный год назад иногда не узнаю в упор throws немножко и для себя нужен.
...
Рейтинг: 0 / 0
[JAVA] Throws
    #39191322
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МарсДа, это ущемление свободы и да , обойтись можно и без этого. Но имхо немного дисциплины большинству не повредит , а ява много внимания уделяет именно совместной разработке кода.
да. Именно так я и понимаю данный сабж.
Поэтому и сказал, что именно "заставляет". Хотя ты написал "настаивает" ))) LOL
Т.к. компилятор выбрасывает ошибку а не варнинг крупным красным)).
Всё верно.
Удачи!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / [JAVA] Throws
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]