|
|
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Допусти есть некий метод на уровне сервиса, как лучше возвращать результаты его работы? Сейчас я использую два подхода, они мне оба не нравятся) 1. Если метод выполнился без исключений - возвращаются результаты работы, иначе исключение. 2. Возвращается объект состоящий из самих результатов работы и enum'а. Например, (myENUM.OK, resultObj), (myENUM.USER_UNDEFINE, null), (myENUM.SERVICE_NOT_AVAILABLE, null). Как правильно делать? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:28:49 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Соответственно в контроллере делаю switch по enum, либо catch для исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:31:17 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Давно уже изобрели RemoteException. Удаленный код должен вызываться точно так же как локальный. Если удаленный код выкинул исключение, то клиент выкидывает RemoteException, с исключением сервиса. Какой смысл конвертировать исключения в статусы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:35:51 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДавно уже изобрели RemoteException. Удаленный код должен вызываться точно так же как локальный. Если удаленный код выкинул исключение, то клиент выкидывает RemoteException, с исключением сервиса. Какой смысл конвертировать исключения в статусы? Я наверно не правильно использовал терминологию) У меня только локальный код. Мой "сервис" просто локальный класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:38:32 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmЯ наверно не правильно использовал терминологию) У меня только локальный код. Мой "сервис" просто локальный класс. Иии... что это меняет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:39:35 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Я не улавливаю смысл городить отдельное исключение для каждого возможного варианта, если можно использовать enum или некий флаг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:39:43 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Кроме того, что IDE напомнит внести их в блок catch) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:41:10 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
И еще забыл сказать, что речь идет о проверяемых исключениях(те которые от Exception) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:42:35 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmЯ не улавливаю смысл городить отдельное исключение для каждого возможного варианта, если можно использовать enum или некий флаг. Или городите только те что нужны. Или RuntimeException ваш выбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:49:58 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmЯ не улавливаю смысл городить отдельное исключение для каждого возможного варианта, если можно использовать enum или некий флаг. google -> exception vs return code ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:50:28 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmДопусти есть некий метод на уровне сервиса, как лучше возвращать результаты его работы? Сейчас я использую два подхода, они мне оба не нравятся) 1. Если метод выполнился без исключений - возвращаются результаты работы, иначе исключение. 2. Возвращается объект состоящий из самих результатов работы и enum'а. Например, (myENUM.OK, resultObj), (myENUM.USER_UNDEFINE, null), (myENUM.SERVICE_NOT_AVAILABLE, null). Как правильно делать? )rdmСоответственно в контроллере делаю switch по enum, либо catch для исключений.rdmСоответственно в контроллере делаю switch по enum, либо catch для исключений.Просто Вы не умеете готовить этих "кошек". Обычное дело. Если на каждый чих создавать отдельный класс-исключение ерунда получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 20:57:33 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGA, по подробнее можно? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 21:18:59 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdm, прочитайте про концепцию Either в Scala. Например вот это: http://www.ibm.com/developerworks/ru/library/j-ft13/ По сути, вы ее вводите. По поводу того, хорошо это или плохо - в Java, скорее, плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 21:57:44 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmWGA, по подробнее можно? )Я невеликий спец и вряд ли хорошо сформулирую. Но попробую. На правах пятницы ) 1) Коды возврата - это плохо. Проверено временем. Enum - практически то же самое, кстати. Если у Вас длинный стектрейс, то это "добро" еще и передавать надо по цепочке. Вспомните, для чего механизм исключений был вообще придуман. 2) Разберитесь в своем бардаке исключений. Если их слишком много - что-то недоработано, где-то они использовались слишком механистически, по шаблону. Checked exceptions - вообще дело тонкое. В смысле супротив RuntimeException и иже с ним. Понимание этого механизма выедает мозг, но стОит того. Пример. Одна и та же исключительная ситуация может вылиться как в checked-, так и unchecked-exception. От чего это зависит? По большей части от того, как ты оцениваешь фатальность исключительной ситуации, т.е. если "шеф! все пропало!", то runtime, а если "тут непонятки возникли, может чо еще можно сделать" - тогда checked. Вообще много по этому поводу написано. Вряд ли я смогу лучше ) 3) Найдите общность в реакции системы на различные классы исключений. Проще говоря, сведите однотипную обработку исключений в одну точку. Пример. Если у вас runtime-исключение, то можно написать один servlet filter, который будет отдавать пользователю ответ "извините, у нас случилась непредвиденная хрень, мы работаем над над ней". Если checked, то типичный сценарий, что в контроллере ты должен принять решение, что с этим делать. 4) Продумайте иерархию классов, чтобы не декларить их все в методах. ------------------------------------- В общем как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 22:53:30 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGA, мне вообще кажется что исключение нужно использовать там, где их нужно пробрасывать по иерархии вверх, в других случаях флаги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:04:20 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Leonidv, ознакомлюсь) да еще и на русском) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:04:47 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Допустим есть выдуманный метод ) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и что в подобных случаях делать? 5 исключений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:15:33 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
и допустим метод расположен где-то в гуще, между слоями) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:18:38 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmи что в подобных случаях делать? 5 исключений? - исключения для кого? Помнишь синий экран смерти винды? Там много информации было? ))) Т.е. если надо наверху детализация, то либо все 5, либо одно но с текстом сопроводиловкой: "одно из 5 сломалось". А по коду возврата по другому что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:35:20 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Petro123rdmи что в подобных случаях делать? 5 исключений? - исключения для кого? Помнишь синий экран смерти винды? Там много информации было? ))) Т.е. если надо наверху детализация, то либо все 5, либо одно но с текстом сопроводиловкой: "одно из 5 сломалось". А по коду возврата по другому что-ли? Если в гуще, то нет) Но если перед контроллером, то лучше 10 значений enum'a, чем 10 классов исключений) Нет?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:37:27 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
По поводу текста сопровождения. А если интернализация? Маркеры плейсхолдера в гущу добавлять? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:39:12 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdm, Всё очень индивидуально. - исключения надо хорошо документировать, чтобы не были неожиданностью для другого программиста - иногда неудобно отлаживать приложение в IDE которое спотыкается на них. - исключения удобны для проброски на самый верх через несколько слоёв. По поводу текста - приведи пример, что именно тебя мучает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 23:52:24 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Either и Option довольно забавно, правда кода получается многовато) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 00:17:38 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
авторКакой смысл конвертировать исключения в статусы? В простых случаях (веб например) исключения можно не обрабатывать - например на сайте показывается ошибка 500, потом система мониторинга оповещает админа, админ разбирается в чем дело со стектрейсами в руках. В сложных случаях это не работает - нельзя выкинуть исключение из 10-часового ETL процесса потому что какой-то второстепенный ресурс недоступен. Приходится конвертить исключения в статусы вида "а еще тут такая ошибка была". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 01:21:22 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmДопустим есть выдуманный метод ) [src java] public ... myMethod(int a, int b) { //какие-нибудь ограничения накладываемые на a и b, которые нельзя проверить через Bean Validate // Вообще говоря можно . Можете взять модель исключений в Bean Validation, если не хотите закладываться на provider-специфичные особенности (см. JSR-303, Appendix C). Но в JavaEE 7 эта штука включена, между прочим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 09:10:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38186366&tid=2129737]: |
0ms |
get settings: |
16ms |
get forum list: |
29ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
76ms |
get topic data: |
18ms |
get forum data: |
6ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 299ms |
| total: | 546ms |

| 0 / 0 |
