|
|
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! Запускаю процедуру через Ibatis (сделал WSDL, прописал mapping) - всё работает! Хочу теперь красиво отлавливать exeption со стороны сервера. Тоесть хочу пользователю при запросах с сайта - выдавать- русские и понятные сообщения через Raiserror (процедуры). Для этого в методе , беру текст из Exception (исключительной ситуации) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Получаю: Код: plaintext 1. 2. 3. 4. Как бы мне отдавать только java.sql.SQLException: Нет данных 0 строк, сообщение из базы об ошибке! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 08:52:19 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
- ошибки тесно связаны с транзакциями - транз. связаны с технолгией их обр-ки (декларативные или нет и т.д.) и фреймворками (перехватывают) Поэтому тут целая стратегия должна. - спринг есть? - БЛ в БД есть? В том смысле, что вы сами генерируете ошибку в БД - пользовательские? ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 09:33:49 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
medoed , SQLException это вложенное исключение. Что бы до него добраться вам нужно рекурсивно вызывать e.getCause() до тех пор пока у исключения на данной итерации (e.getCause() == null || e.getCause() == e). Вторая часть выражения нужна, так как исключения любят в поле cause ставить ссылку на самого себя, и без этой проверки вы уйдете в бесконечный цикл (или в StackOverflow при рекурсии). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 09:44:19 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
Petro123- ошибки тесно связаны с транзакциями - транз. связаны с технолгией их обр-ки (декларативные или нет и т.д.) и фреймворками (перехватывают) Поэтому тут целая стратегия должна. - спринг есть? - БЛ в БД есть? В том смысле, что вы сами генерируете ошибку в БД - пользовательские? 1. Взято из beans <!-- сервис на шине, доступный снаружи (для процедуры с селектом) --> <cxf:cxfEndpoint id="ModelAvisCursorSelect" address="${model.avis.test.address2}" wsdlURL="classpath:META-INF/avis-wsdl/proc-select-mssql.wsdl" serviceName="ws:AvisService" endpointName="ws:portAvis" xmlns:ws=" http://test.ru/interplat/select/"> <cxf:properties> <entry key="dataFormat" value="PAYLOAD" /> <entry key="schema-validation-enabled" value="false" /> <entry key="faultStackTraceEnabled" value="false" /> <entry key="exceptionMessageCauseEnabled" value="true" /> </cxf:properties> </cxf:cxfEndpoint> 2. Да я сам генерирую ошибку в БД через raiserror ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 09:49:24 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
svenom medoed , SQLException это вложенное исключение. Что бы до него добраться вам нужно рекурсивно вызывать e.getCause() до тех пор пока у исключения на данной итерации (e.getCause() == null || e.getCause() == e). Вторая часть выражения нужна, так как исключения любят в поле cause ставить ссылку на самого себя, и без этой проверки вы уйдете в бесконечный цикл (или в StackOverflow при рекурсии). Svenom, я не более 2-х месяцев пишу на java. Нельзя ли примерчик для данного случая: как написать как рекурсивно добраться до e.getCause(), сорри за наглость!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 09:51:06 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
medoed2. Да я сам генерирую ошибку в БД через raiserror Уточню: у меня было 2 варианта генерации: - В БД был текст на русском "Документ заблокирован", который по стеку шёл на самый верх до мод.окна - В БД был код ошибки ORA-234556, который приложение декодировало. У вас как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 10:04:34 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
Petro123medoed2. Да я сам генерирую ошибку в БД через raiserror Уточню: у меня было 2 варианта генерации: - В БД был текст на русском "Документ заблокирован", который по стеку шёл на самый верх до мод.окна - В БД был код ошибки ORA-234556, который приложение декодировало. У вас как? У меня MSSQL, но не Oracle! Но думаю на 90% - это первый вариант, код ошибки я пока не классифицирую (хотя у нас такая идея витает). Спасибо за идею - как нить набодяжим и мы справочник)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 10:11:15 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
medoed, там без разницы оракл или сиквел. Первый параметр - код, второй строка. ЗЫ svenom тебе дал направление. Рекурсия, это "начать без неё вызвав 15 раз одну и ту же процедуру". Пробуй! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 10:30:50 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
Вроде получилось (коллега с рекурсией подмог): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Всем спасибо, особенно Svenom... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 10:56:04 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
Ой, неправильно вам сказал. Вот это Код: java 1. поменяйте на Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 11:05:23 |
|
||
|
java + IBATIS + MSSQL - sql_error красиво?
|
|||
|---|---|---|---|
|
#18+
А, нет, все правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2012, 11:06:19 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37628407&tid=2132760]: |
0ms |
get settings: |
11ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
50ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 323ms |
| total: | 503ms |

| 0 / 0 |
