|
|
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений. Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2016, 12:07 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13, throws нужен, чтобы передать исключение вверх по иерархии, туда где дальнейшая логика строится на этом исключении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2016, 12:49 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13Зачем указывать эти исключения ты прав. Подумать есть над чем. В Delphi такой фигни нет...но Java более строго подходит соглашениям \ контрактам по коду. В Delphi об исключениях компонента говорят устно тому кто будет использовать или пишут в комментариях. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2016, 13:33 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений. В случае с декларацией interface, компиллятор не может знать тип вероятного исключения. И мы вручную указываем тип исключения как вариант возможного return value наверх по стеку от класса который имплементирует наш интерфейс. Кстати недавно в этом форуме был спор по поводу пользы или вреда checked exeptions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2016, 14:46 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
maytonИ мы вручную указываем тип исключения как вариант возможного return value наверх я привёл пример Delphi и меня это полностью устраивало. - да, я там не всегда знал какое придёт наверх в мой слой БЛ. И не страдал от этого. Всё равно на момент моей готовой процедуры я по писят раз проверял и тестировал все мыслимые случай райзе от нижнего слоя. Разница только в том, что я вручную указывал в комментарии . Что может прийти IO Exception от файловой системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2016, 14:58 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений. Во-первых, при компиляции придется сканировать _все_ вызовы _всех_ методов, которые используются в нужном методе, и так по всему стеку вызовов. Мягко говоря, накладно. Во-вторых, есть native методы, которые не просканируешь никак. spider13Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял. Таких примеров быть не может :) В том же .NET, например, прекрасно обходятся без throws. Но исключение как часть контракта метода - это вполне в духе Java. Сначала разрабатывается API, а потом различные вендоры его имплементируют. Если код разных вендоров будет выбрасывать совершенно разные исключения в одних и тех же ситуациях, это внесет большую путаницу при использовании, и, как следствие - пресловутый vendor lock-in. Фиксированные типы исключений в контракте метода эту проблему устраняют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2016, 22:30 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений. Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял. в Java исключения делятся на контролируемые и произвольные (cheeked & unchecked). произвольные невозможно предсказать и обработать как-то стандартно, и возникают они спонтанно. типичные примеры - NPE и нехватка памяти. такие исключения обрабатывать программно считается что бессмысленно. также есть и контролируемые , это, наоборот, предсказуемые ситуации, которые могут возникнуть в каких-то конкретных ситуациях. например, открываешь ты файл, а файла нет в данном месте, или нет к нему нужного доступа, или файл системный как в windows, и т. п. В этих случаях в программе можно предусмотреть предопределенные действия, направленные на устранение этих проблем. например, нет файла - дать возможность выбрать другой файл, Если нет доступа на запись - открыть только на чтение и ждать потом возможность сохранить как другой файл. и т. д. тут ключевая идея (на мой взгляд - дурацкая) Java в том, чтобы заставить пользователя класса обработать все такие случаи, и предусмотреть альтернативные варианты развития событий. вот для этого и нужны throw. там ты можешь описать все checked exception, генерируемые данным кодом (функцией). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 08:29 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
MasterZivтут ключевая идея (на мой взгляд - дурацкая) Java в том, чтобы заставить +1 вот это и сомнительно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 10:31 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
maytonКстати недавно в этом форуме был спор по поводу пользы или вреда checked exeptions. ссылочка на всякий случай http://www.sql.ru/forum/1203838/podskazhite-chto-pochitat-pro-isklucheniya ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 10:58 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13Подскажите, в чем вообще смысл оператора throws? Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений. Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял. 1)throws может быть в интерфейсе где кода нет по определению и соответственно компилятору сканировать нечего.В Яве очень много интерфейсов. 2)throws нужны не только для компилятора но и для чтения кода. Кто-то пишет правильные коментарии, кто-то тестирует код до посинения предусматривая все возможные ситуации. Кто-то нет. Ява заставляет (ок, не заставляет, но настаивает и помогает) оформлять эти "комментарии" официально в виде throws понятного и человеку и компилятору и IDE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 12:15 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
МарсЯва заставляет (ок, не заставляет, но настаивает и помогает) выключить эту фигню есть рубильник? Если нет, то заставляет)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 12:29 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
spider13Подскажите, в чем вообще смысл оператора throws? смысл в том, чтобы обязать другого программиста (не тебя) обрабатывать то исключение, которые ты выбрасываешь в своем коде. spider13Зачем указывать эти исключения, если компилятор сам может просканировать нужный метод и сформировать список возвращаемых исключений. Компилятор может "просканировать" и "просканирует" и, более того, даст ошибку времени компиляции , если тот, другой засранец-программист проигнорирует твой приказ ему обрабатывать твои исключения. spider13Можете привести примеры, где без throws не обойтись, чтобы я, как программист, далекий от java, понял. Такого примера для программиста "далекого от ява" нельзя привести, так как нет прямых аналогий такого поведения компилятора в других языках. Но "идею" проиллюстрировать можно. Вот сел ты писать "библиотечный компонент", которым в обязательном порядке будут пользоваться все остальные программисты мира. В этом компоненте у тебя три метода - открыть ресурс, закрыть ресурс и записать в ресурс. Написал ты первых два и сел за третий - записать в ресурс. Ему в параметрах приходит идентификатор ресурса и строка, которую надо записать. Пишешь ты код и получаешь внутри своего кода ошибочное состояние - запись почему-то не получилась. Вот через throws ты заставляешь (через силу компилятора) программиста, использующего твой код, разбираться с тем, что и как надо делать дальше, когда в твоем коде не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 12:47 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
Petro123МарсЯва заставляет (ок, не заставляет, но настаивает и помогает) выключить эту фигню есть рубильник? Если нет, то заставляет)). Ну для особо свободолюбивых маньяков можно ловить все чекнутые эксепшны (да чего там чекнутые, сразу Throwable), заворачивать в рантайм эксепшн и выбрасывать наверх без throws o.0 Это из той же серии что детей заставляют чистить зубы. Да, это ущемление свободы и да , обойтись можно и без этого. Но имхо немного дисциплины большинству не повредит , а ява много внимания уделяет именно совместной разработке кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 13:04 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
пример про чистку зубов наверно некорректен - зубы мы чистим в том числе для себя, а throws пишем для других. Хотя с учетом того что я собственный код написанный год назад иногда не узнаю в упор throws немножко и для себя нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 13:10 |
|
||
|
[JAVA] Throws
|
|||
|---|---|---|---|
|
#18+
МарсДа, это ущемление свободы и да , обойтись можно и без этого. Но имхо немного дисциплины большинству не повредит , а ява много внимания уделяет именно совместной разработке кода. да. Именно так я и понимаю данный сабж. Поэтому и сказал, что именно "заставляет". Хотя ты написал "настаивает" ))) LOL Т.к. компилятор выбрасывает ошибку а не варнинг крупным красным)). Всё верно. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 13:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39191301&tid=2124280]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 394ms |

| 0 / 0 |
