|
|
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGArdmДопустим есть выдуманный метод ) [src java] public ... myMethod(int a, int b) { //какие-нибудь ограничения накладываемые на a и b, которые нельзя проверить через Bean Validate // Вообще говоря можно . Можете взять модель исключений в Bean Validation, если не хотите закладываться на provider-специфичные особенности (см. JSR-303, Appendix C). Но в JavaEE 7 эта штука включена, между прочим. Я говорил про функциональность, которую нельзя проверить Bean Validate. Выражения с a и b только ради примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 11:10:12 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪавторКакой смысл конвертировать исключения в статусы? В простых случаях (веб например) исключения можно не обрабатывать - например на сайте показывается ошибка 500, потом система мониторинга оповещает админа, админ разбирается в чем дело со стектрейсами в руках. В сложных случаях это не работает - нельзя выкинуть исключение из 10-часового ETL процесса потому что какой-то второстепенный ресурс недоступен. Приходится конвертить исключения в статусы вида "а еще тут такая ошибка была". Если вы говорите о Error или RuntimeException спору нет, а если проверяемое исключение? Например пользователь исчерпал лимит чего-нибудь, лучше выдать сообщения, чем 500. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 11:13:19 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGArdmДопустим есть выдуманный метод ) [src java] public ... myMethod(int a, int b) { //какие-нибудь ограничения накладываемые на a и b, которые нельзя проверить через Bean Validate // Вообще говоря можно . Можете взять модель исключений в Bean Validation, если не хотите закладываться на provider-специфичные особенности (см. JSR-303, Appendix C). Но в JavaEE 7 эта штука включена, между прочим. очень познавательно, спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 12:02:10 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmНапример пользователь исчерпал лимит чего-нибудь, лучше выдать сообщения, чем 500.Типа, ошибки не могут сопровождаться настроенными сообщениями/страницами??? P.S. За выдачу 200-х кодов при ошибках - "повбывав бы". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 20:17:17 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmЕсли вы говорите о Error или RuntimeException спору нет, а если проверяемое исключение? Например пользователь исчерпал лимит чего-нибудь, лучше выдать сообщения, чем 500.Так я ж и говорю - Вы не умеете готовить исключения ) Зачем же сразу 500-я??? Допустим у Вас контроллер обычный сервлет. В него заинжектили ссылку на EJB. Дергаете метод, который выкидывает MyValidationException. Ловите исключение в контроллере, принимаете решение что делать, например, перенаправляете на страницу, на которой вежливо объясняете пользователю, что он там исчерпал. Поймите, что наружу все равно надо передать инфу об исключительной ситуации. Тем или иным способом. Исключения просто поудобнее. 1) Обходите ограничение на единственный возвращаемый объект. 2) Явно декларируете возможную исключительную ситуацию, обязывая ее обработать. Не редкость, что бэк-энд и фронт разрабатывают разные люди. 3) Получаете возможно "перескочить" наверх по цепочке вызовов без необходимости возвращать enum'ы или другие объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 20:48:43 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGAПоймите, что наружу все равно надо передать инфу об исключительной ситуации. ну, если просто сайт. Публичный сайт. То юзверю не выводится. В целях безопасности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 21:20:40 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Сейчас понимание приходит) А еще мне очень понравился MethodValidate HV, везде понатыкаю его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 23:05:05 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
Petro123WGAПоймите, что наружу все равно надо передать инфу об исключительной ситуации. ну, если просто сайт. Публичный сайт. То юзверю не выводится. В целях безопасности.Конечно, я упрощаю. rdmСейчас понимание приходит) А еще мне очень понравился MethodValidate HV, везде понатыкаю его.Не надо "втыкать" повсюду ) Достаточно создать один класс-интерцептор (если используете EJB) или один аспект, если Spring. Method Validation и задумывалось с таким расчетом. Проверяем описание класса и если задекларирован специальный класс-исключение (или его потомок), то выбрасываем такое исключение. Если же нет - выбрасываем RuntimeException, у которого cause = заданному исключению. Надеюсь понятно объяснил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 23:22:08 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGA, я понял из прочитанного(для Spring), что вещается интерцептор, которые проверяет сначала параметры вызова, затем выполняет тело метода и потом проверяет результат работы метода. Если в одна из двух проверок "проваливается" генерируется исключение(для меня не понятно почему оно не проверяемое) со списком значений, в которых собственно и содержится информация о причинах возникновения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 23:50:33 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
И интерцепторы вещаются на методы классов отмеченные аннотацией@Validated, за это отвечает bean ...PostProcessor, который при создании бинов, просматривает их на наличии аннотации @Validated и если она присутствует - вещает интерцепторы.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 23:53:10 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmWGA, я понял из прочитанного(для Spring), что вещается интерцептор, которые проверяет сначала параметры вызова, затем выполняет тело метода и потом проверяет результат работы метода. Если в одна из двух проверок "проваливается" генерируется исключение(для меня не понятно почему оно не проверяемое) со списком значений, в которых собственно и содержится информация о причинах возникновения.В Spring не юзал, не скажу. Непроверяемое - потому что в общем случае интерцептор не может выбрасывать исключение, которое не объявлено обернутым методом. Иначе получишь не совсем то, что ожидал ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 00:20:06 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGArdmWGA, я понял из прочитанного(для Spring), что вещается интерцептор, которые проверяет сначала параметры вызова, затем выполняет тело метода и потом проверяет результат работы метода. Если в одна из двух проверок "проваливается" генерируется исключение(для меня не понятно почему оно не проверяемое) со списком значений, в которых собственно и содержится информация о причинах возникновения.В Spring не юзал, не скажу. Непроверяемое - потому что в общем случае интерцептор не может выбрасывать исключение, которое не объявлено обернутым методом. Иначе получишь не совсем то, что ожидал ) Это ограничение Java? Если так, то это логично. Точнее сказать, иначе нельзя. Я с AOP и Reflection особо не разбирался. Я вижу минус в том, что IDE не заставит их обработать, т.е. вполне можно забыть обернуть вызов метода в блок try catch ) Там исключение по сути одно - MethodConstraintViolationException. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 00:35:11 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmЯ вижу минус в том, что IDE не заставит их обработать, т.е. вполне можно забыть обернуть вызов метода в блок try catch )Можно подумать оно помешает не обрабатывать их в других случаях... Из примеров когда заставит не просто среда, а компилятор - декораторы в EJB (точнее в CDI). Там рулит type-safe... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2013, 21:11:12 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
WGArdmЯ вижу минус в том, что IDE не заставит их обработать, т.е. вполне можно забыть обернуть вызов метода в блок try catch )Можно подумать оно помешает не обрабатывать их в других случаях... Из примеров когда заставит не просто среда, а компилятор - декораторы в EJB (точнее в CDI). Там рулит type-safe... Подробнее можно? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2013, 01:00:59 |
|
||
|
как возвращать результат работы метода?
|
|||
|---|---|---|---|
|
#18+
rdmWGAпропущено... Можно подумать оно помешает не обрабатывать их в других случаях... Из примеров когда заставит не просто среда, а компилятор - декораторы в EJB (точнее в CDI). Там рулит type-safe... Подробнее можно? ) Можно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2013, 11:23:41 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38187005&tid=2129737]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
68ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 286ms |
| total: | 499ms |

| 0 / 0 |
