|
|
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Недавно изучаю Java и не могу понять практической пользы требования объявлять в описании метода : throws и перечисление необрабатываемых, но возможных в нём экцепшнов впервые увидел это в жаве и так и не въехал а зачем вообще это нужно? какая в этом практическая польза для компилятора или среды исполнения? откуда ноги растут и зачем это, на первый взгляд, нелепое требование в языке? Поясните если кто знает, спасибо заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 13:56:28 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:00:55 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Тут надо не Java изучать, а идеологию ООП. Чтобы понять ответ на этот вопрос. Ну а вообщем, весьма полезный механизм при написании устойчивых программ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:25:39 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
А это для того, чтобы вышестоящие классы знали о том, что внизу произошла какая-то фигня-с. Вот допустим у тебя есть класс работы с БэДэ. Ты обращаешься к нему, говоришь "сделай инсерт". А коннекшен в это время отваливается. Тогда ты выкидываешь эксцепшен через throw new DBException(). А слово throws в названии метода значит, что метод будет требовать от вышестоящего класса отловить этот самый эксцепшен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:26:51 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Вот смотри: Копает рабочий лопатой яму. И вдруг лопата ломается. Что делать? Рабочий не может копать сломанной лопатой, но и не знает, где эти лопаты брать. Тогда он идет к своему бригадиру и говорит "лопата сломалась" (передает ошибку наверх). А бригадир уже знает, где берутся лопаты, поэтому берет ее и отдает рабочему (обрабатывает ошибку). Если ты пишешь класс "рабочий", который не знает, что делать с некоторыми ошибками. Ты должен описать их в throws, чтобы класс "бригадир" знал, какие проблемы могут возникнуть и быть готовым к нему. А вот классу "директор" уже о них знать не нужно - до него они не дойдут. PS. Считаем, что класс "директор" - это Main класс, который создает у себя объекты каких-то классов, которые в свою очередь создают объекты и где-то в конце есть объект класса "бригадир" и созданные им объекты класса "рабочий". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:35:03 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
pamirВот смотри: Копает рабочий лопатой яму. И вдруг лопата ломается. Что делать? Рабочий не может копать сломанной лопатой, но и не знает, где эти лопаты брать. Тогда он идет к своему бригадиру и говорит "лопата сломалась" (передает ошибку наверх). А бригадир уже знает, где берутся лопаты, поэтому берет ее и отдает рабочему (обрабатывает ошибку). Если ты пишешь класс "рабочий", который не знает, что делать с некоторыми ошибками. Ты должен описать их в throws, чтобы класс "бригадир" знал, какие проблемы могут возникнуть и быть готовым к нему. А вот классу "директор" уже о них знать не нужно - до него они не дойдут. PS. Считаем, что класс "директор" - это Main класс, который создает у себя объекты каких-то классов, которые в свою очередь создают объекты и где-то в конце есть объект класса "бригадир" и созданные им объекты класса "рабочий". +1 После чего директор получает информацию о том, что у какого-то рабочего сломалась лопата и сменит поставщика лопат :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:40:50 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Хорошо, спасибо, всё то что вы описали мне ясно. Задам вопрос иначе - чем отличается механизм обработки ошибок в Java от аналогичного в других языках, и как они эти другие языки обходятся без этих описаний? Ни в дельфе, ни в шарпе ничего подобного нет и никакие дополнительные описания экцепшнов не требуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:17:02 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Потому что разная идеология языка. Джава считается защищенным языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:22:38 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
новичок_в_Java... Ни в дельфе, ни в шарпе ничего подобного нет и никакие дополнительные описания экцепшнов не требуются. И что имеем в результате? Метод бросает исключение, а программа не знает что с ним делать (разработчик не знал об исключении или не захотел его обрабатывать). В результате исключения вместо того, что бы быть обработанным (рабочий получает новую лопату), летит на самый верх и показывается пользователю как красивое окошко с красной иконкой. Только что пользователю с этим делать, если обработка исключение - дело разработчика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:31:34 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Верно ли я понимаю, что throws это просто описания ПОМОГАЮЩИЕ пользователям методов узнать о том какие checked-экцепшны от этих методов можно ожидать и не более того? Если таких описаний нет приходится обладать "сверхзнанием" (например из документации) о том какие экцепшны могут порождаться. А здесь это знание уже находится в сигнатурах методов, что несколько упрощает взаимодействие с кодом. Никакие иные функции на это описание не накладываются. Поправьте меня пожалуйста если я чего-то недопонимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:35:37 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
что имеем в результате? Метод бросает исключение, а программа не знает что с ним делать Нас и здесь ничто не заставляет его обрабатывать. Обрабатывать или нет это на совести разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:37:32 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
новичок_в_Java Нас и здесь ничто не заставляет его обрабатывать. Обрабатывать или нет это на совести разработчика. Заставляет. Либо тоже описать trows, либо try/catch. Иначе компилятор пошлёт далеко. -- Алексей Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 15:39:46 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Таким образом, если я правильно понял, throws это некий механизм самодокументирования кода возведённый до уровня обязательного синтаксического требования. Никакой иной функциональности он не несёт и никаких обязательств на разработчика (кроме синтаксических) не накладывает. Обладая этой информацией о вызываемых методах программист сам решает надо ли их обрабатывать (try-блок) или отправлять выше по call-стеку (писать throws). Не вижу в этом ничего связанного с "защищённостью" языка или "идеологией ООП". Как ничто не мешает необработанному экцепшну спокойно долететь до вершины стека вызовов и предстать в виде "красивого окошка с красной иконкой". Всё так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 16:19:42 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
новичок_в_Java Не вижу в этом ничего связанного с "защищённостью" языка или "идеологией ООП". Как ничто не мешает необработанному экцепшну спокойно долететь до вершины стека вызовов и предстать в виде "красивого окошка с красной иконкой". На да, только для этого надо предпринять некоторые усилия (прописать throws у всех). А в SWING'ах всяких будет ещё сложнее. В общем- это затрудняет вылет левых окошек. А с защищённостью связь прямая- это некоторый зачаток "программирования по контракту" :) -- Алексей Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 16:24:57 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Все так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 16:43:25 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
новичок_в_JavaНе вижу в этом ничего связанного с "защищённостью" языка или "идеологией ООП". Как ничто не мешает необработанному экцепшну спокойно долететь до вершины стека вызовов и предстать в виде "красивого окошка с красной иконкой". В .Net все именно так и работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 16:48:08 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
AnarionВсе так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. "Повбывав бы!"(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:08:37 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
AnarionВсе так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. omg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:13:09 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
AnarionВсе так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. Ужоснах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:16:28 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
AnarionВ Код: plaintext 1. 2. 3. 4. 5. Иногда именно так делать и нужно иногда нет. Все зависит от ситуации. В любом случае, такое категоричное и однозначное заявление - не верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:23:35 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
AnarionВсе так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. А дальше что? Чем это лучше вообще не обработанных исключений? Как тут уже показали, исключения позволяют передать обработку на тот уровень стека вызовов, на котором ее можно наиболее корректно обработать. И далеко не всегда это должен быть верхний уровень. Например, вам нужно обработать дать возможность пользователю обработать десяток-другой независимых друг от друга XML-файлов. И что, когда во втором файле будет не валидный XML, оставшиеся не обрабатывать? А именно это и произойдет, если мы исключение на верхнем уровне перехватим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 17:38:13 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
wessen AnarionВ Код: plaintext 1. 2. 3. 4. 5. Иногда именно так делать и нужно иногда нет. Все зависит от ситуации. В любом случае, такое категоричное и однозначное заявление - не верно. Так не нужно делать никогда . Как минимум исключения надо логгировать, а по-нормальному - обрабатывать их, причем в зависимости от типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 18:06:59 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Зашедший wessen AnarionВ Код: plaintext 1. 2. 3. 4. 5. Иногда именно так делать и нужно иногда нет. Все зависит от ситуации. В любом случае, такое категоричное и однозначное заявление - не верно. Так не нужно делать никогда . Как минимум исключения надо логгировать, а по-нормальному - обрабатывать их, причем в зависимости от типа. я думаю автор сего топика имел ввиду делать всегда один try/catch на весь метод, обработка тут непричем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 18:29:09 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Зашедший AnarionВсе так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. "Повбывав бы!"(с) плюсмильйон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 18:44:28 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
wessen Зашедший wessen AnarionВ Код: plaintext 1. 2. 3. 4. 5. Иногда именно так делать и нужно иногда нет. Все зависит от ситуации. В любом случае, такое категоричное и однозначное заявление - не верно. Так не нужно делать никогда . Как минимум исключения надо логгировать, а по-нормальному - обрабатывать их, причем в зависимости от типа. я думаю автор сего топика имел ввиду делать всегда один try/catch на весь метод, обработка тут непричем. Во-первых, слова "метод" я там не заметил, только слово "класс". Во-вторых обрабатывать все ошибки используя единственную и пустую секцию catch (Exception) - за такое в продакшн-коде надо сразу увольнять. Хуже только вариант с catch(Throwable) - как пример абсолютной и неизлечимой клиники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 20:34:19 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
новичок_в_JavaТаким образом, если я правильно понял, throws это некий механизм самодокументирования кода возведённый до уровня обязательного синтаксического требования. Никакой иной функциональности он не несёт и никаких обязательств на разработчика (кроме синтаксических) не накладывает. Обладая этой информацией о вызываемых методах программист сам решает надо ли их обрабатывать (try-блок) или отправлять выше по call-стеку (писать throws). Не вижу в этом ничего связанного с "защищённостью" языка или "идеологией ООП". Как ничто не мешает необработанному экцепшну спокойно долететь до вершины стека вызовов и предстать в виде "красивого окошка с красной иконкой". Ну... здесь можно рассмотреть две крайности. Крайность №1 Все методы объявляюься как throws Exception Любая ситуация (потеря сетевого коннекта) вызывает откат стека до самой вершины с выбросом в консоль трассы методов. Например: IOException в сервлете "валит" WEB-сервер. Крайность №2 Все методы содержат захват и подавление любых видов исключений. Внешне такой код работает превосходно, но кодить его достаточно сложно, ибо не всегда можно определить реакцию вашего софта на исключения (их может быть от десятка до нескольких сотен), да и отлавливать ошибки в таком исходнике неудобно. Короче, необходимо искать золотую середину и определится с протоколом исключений. Сам-же протокол - это предмет многочисленных договорённостей (или контрактов) между группами разработчиков. И его следует выносить на обсуждение. Это нормальная практика для разработки различных tier в бизнес-логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 21:50:41 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
авторИ что имеем в результате? Метод бросает исключение, а программа не знает что с ним делать (разработчик не знал об исключении или не захотел его обрабатывать). я думаю что стоит обратить внимание на ситуацию когда ваш метод бросает исключение а не чужой. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. в этом примере работа с исключениями это часть логики. Понятно что кроме PasswordInvalidException могут быть другие исключения, с сервером соединения нет или что ещё. И тот кто будет использовать ваш метод напишет что-то вроде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Таким образом вы явно предупреждаете тех кто будет использовать ваш код о том какие могут быть ошибки и предлагаете это учесть. Хотя другие могут наплевать на ваши предупреждения и просто ловить Throwable. Я, кстати, так и делаю обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 22:35:26 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024Хотя другие могут наплевать на ваши предупреждения и просто ловить Throwable. Я, кстати, так и делаю обычно. Круто! А теперь предлагаю на пару секунд задуматься, что будет в случае возникновения, к примеру, OutOfMemory. И как оно обрабатывает Error, а также чем Error отличается от Exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 22:48:04 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
пусть лошадь думает. Я ж сказал, указывается разработчиком что может быть его собственное исключение. Кто-то может его использовать и обрабатывать, кто-то может забить. Это скорей элемент логики а не гарантия успешной отработки метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 22:51:56 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024пусть лошадь думает. Я ж сказал, указывается разработчиком что может быть его собственное исключение. Кто-то может его использовать и обрабатывать, кто-то может забить. Это скорей элемент логики а не гарантия успешной отработки метода. Error, в отличие от Exception, элементом бизнес-логики не является, и забивать на него строго не рекомендуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 22:54:14 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Зашедший 1024пусть лошадь думает. Я ж сказал, указывается разработчиком что может быть его собственное исключение. Кто-то может его использовать и обрабатывать, кто-то может забить. Это скорей элемент логики а не гарантия успешной отработки метода. Error, в отличие от Exception, элементом бизнес-логики не является, и забивать на него строго не рекомендуется. не рекомендуется забивать на Error? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:06:41 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:07:50 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Вот цытато из JavaDocs: Sun MicrosystemsAn Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions. The ThreadDeath error, though a "normal" condition, is also a subclass of Error because most applications should not try to catch it. A method is not required to declare in its throws clause any subclasses of Error that might be thrown during the execution of the method but not caught, since these errors are abnormal conditions that should never occur. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:07:54 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
и что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:08:15 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
чего-чего? Зашедший 1024пусть лошадь думает. Я ж сказал, указывается разработчиком что может быть его собственное исключение. Кто-то может его использовать и обрабатывать, кто-то может забить. Это скорей элемент логики а не гарантия успешной отработки метода. Error, в отличие от Exception, элементом бизнес-логики не является, и забивать на него строго не рекомендуется. не рекомендуется забивать на Error? В смысле тупо глушить его нельзя. "Забивать" ака "перехватывать и писать в лог". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:09:00 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
и сравни с тем что ты сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:09:15 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Зашедший В смысле тупо глушить его нельзя. "Забивать" ака "перехватывать и писать в лог". зачем вообще перехватывать Error? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:10:31 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
а теперь ответь на вопрос Зашедший В смысле тупо глушить его нельзя. "Забивать" ака "перехватывать и писать в лог". зачем вообще перехватывать Error? Именно что незачем. Я как раз и написал, что код типа catch(Throwable) - это, мягко говоря, неверно. Перехватывать можно (и часто нужно) Exception, но никак не Error, а в случае с Throwable они тоже будут перехвачены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:12:54 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
ну добавь в cath(Error e) { throw e; } сути это не меняет. Исключения это не гарантия что вс отработает а элемент логики. Можно объявить и те кто будет использовать смогут поймать и обработать. Если захотят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:15:13 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024 сути это не меняет. что полезного в этой конструкции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:19:12 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
етитская сила! 1024 сути это не меняет. что полезного в этой конструкции? "Пацаны на раёне говорят, что так круче"(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:28:14 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
полезного нет. Но раз в хелпе написано что Еррор нежелательно обрабатывать то можно передать его наверх. Вопрос был: зачем вообще этот throws в объявлении метода? я написал зачем. Какие-то тонкости или несоответствия - да, есть. Где их нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:31:58 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Зашедший етитская сила! 1024 сути это не меняет. что полезного в этой конструкции? "Пацаны на раёне говорят, что так круче"(с) на раёне по.уй как то ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:42:26 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024полезного нет. Но раз в хелпе написано что Еррор нежелательно обрабатывать то можно передать его наверх. Вопрос был: зачем вообще этот throws в объявлении метода? я написал зачем. Какие-то тонкости или несоответствия - да, есть. Где их нет. Я заинтересовался целью объявления catch(Throwable) вместо catch(Exception), так как ч0ткие методы могут только Exception бросать. Или есть необходимость обрабатывать StackOverflow & OutOfMemory? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 00:24:05 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
catch(OutOfMemoryError ooe) { System.err.println("дать писты разработчикам, опять ликов наоставляли"); throw ooe; } catch(LinkageError le) { System.err.println("удод, настрой пути к либам"); throw le; } как пример. Но это офтоп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 00:41:31 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
по моему писать Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 09:02:44 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024 Код: plaintext 1. 2. 3. 4. 5. 6. 7. А могут ли быть исключения частью логики? Как мне кажется, в вашем примере лучше отдельно оговорить, что пароль является правильным. И выбрасывать непроверяемое исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:35:51 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
ну, зачем же они тогда нужны если их не кидать, не ловить и не обрабатывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:50:54 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Зашедший Во-первых, слова "метод" я там не заметил, только слово "класс". Можно пример класса в котором несколько методов и один на весь класс блок try/catch? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:51:19 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
авторВо-вторых обрабатывать все ошибки используя единственную и пустую секцию catch (Exception) - за такое в продакшн-коде надо сразу увольнять. Хуже только вариант с catch(Throwable) - как пример абсолютной и неизлечимой клиники. мне кажется нада менее категорично заявлять что можно а что нельзя. Мир широк. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:05:28 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024 мне кажется нада менее категорично заявлять что можно а что нельзя. Мир широк. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Ваш код — говно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:17:50 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
спасибо, но я считаю его шедевром. Чиста моё мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:23:48 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024мне кажется нада менее категорично заявлять что можно а что нельзя. Мир широк. Пример: мне кажется плохой пример, тут может прилететь error "кирдык всему приложению", а тебя тут цвет консолки беспокоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:25:40 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
vas0 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Ну бывает. "Давайте мы попробуем получить параметр от ..., а если не получим- то будем считать его равным ...". Естественно, что вывести log.error(...) стоит :) Хотя да, пахнет это не очень :) -- Алексей Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:26:03 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
да ладно, обычно прокатывает. Если б было больше времени, если б было больше ресурсов и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:31:44 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
wessen Зашедший Во-первых, слова "метод" я там не заметил, только слово "класс". Можно пример класса в котором несколько методов и один на весь класс блок try/catch? Лехко Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:37:25 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
мош Блоха почитаем. боян порван имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:41:17 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
Хрюхрюшкин.Ваш код — говно. Нормальный код. Я - бы написал вместо печати стека Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:41:23 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
maytonНормальный код. Я - бы написал вместо печати стека Код: plaintext 1. Если б был отформатирован — было б нормально. С тем, что лучше писать в лог, ага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:46:13 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
1024ну, зачем же они тогда нужны если их не кидать, не ловить и не обрабатывать? ПМСМ, исключения нужно бросать только в крайнем случае. Т.е. не закладывать на них логику. Можно, конечно, делать так, но зачем? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 14:45:39 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
ну так там же код приведён, причём тут пользователь. Например получить что-то из базы данных - как минимум может отсутствовать ждбц драйвер, может быть недоступен сервер, может отсутствовать доступ к этим данным. вроде удобно в методе бросать три разных исключения. Тот код что будет функцию получения данных вызывать может обработать исключения по разному. Например сообщения разные показать или на разные адреса супорта письма послать. А может и не делить их по смыслу а тупо написать "Обратитесь к админу". По-моему удобно и гибко. Это не крайняя ситуация, это обычная конструкция типа if/else. Хотя можно и не использовать, беды не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 15:17:04 |
|
||
|
зачем вообще этот throws в объявлении метода?
|
|||
|---|---|---|---|
|
#18+
AnarionВсе так. И вобще, хорошим стилем считается не плодить кучу try...{} catch{}, а делать на весь класс глобальный Код: plaintext 1. 2. 3. 4. 5. Ээээ... Народ... Это йумор, подъебка. Конечно, так делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 15:55:32 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2144755]: |
0ms |
get settings: |
18ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
57ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 366ms |
| total: | 575ms |

| 0 / 0 |
