Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обработка исключений или иной механизм.
|
|||
|---|---|---|---|
|
#18+
Домашний проект, но хочется сделать его по-человечески. Подскажите, как реализуется механизм передачи из функции в функцию (и в итоге на клиента) сообщений об ошибках в бизнес-логике. Например, передан несуществующий код чего-либо или пользователь пытается выполнить неположеную операцию. В оракле это делалось бы с помощью пользовательских исключений - их можно насоздавать своих, каждая со своим кодом (ну или код один, но в тексте предусматривается тэг с кодом для расшифровки). Как реализуется в постргесе? Пример функция f1 вызывает f2, которая вызывает f3. В последней оказывается, что какой-либо параметр пустой (или не верный или еще что-то). Необходимо прервать f3, вернув в f2 что-то осмысленное. Прервать f2, вернув в f1 и наконец прервать f1, вернув на клиента нечто, что скажет клиенту, что произошла ошибка и какая это ошибка. Можно реализовать, например, так, чтобы возвращаемые значения говорили об ошибке (например, отрицательное значение говорит об ошибке, а величина - код этой ошибки), но! функция не обязательно должна возвращать число. Она же может при корректной работе возвращать, например, дату. В общем-то, может быть все реализуется как и в оракле, просто нужно подтверждение, что это так. И еще - клиент джавиный, ему доступны сообщения об ошибках? Как я понял, код при raise error будет один и тот же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 11:57 |
|
||
|
Обработка исключений или иной механизм.
|
|||
|---|---|---|---|
|
#18+
как в оракле у вас навряд ли получиться, хотя бы изза различий в управлении транзакциями. мож быть сделать механизм вроде виндового, а-ля GetLastError или errno(3) в unix-like системах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 17:03 |
|
||
|
Обработка исключений или иной механизм.
|
|||
|---|---|---|---|
|
#18+
pamir...Пример функция f1 вызывает f2, которая вызывает f3. В последней оказывается, что какой-либо параметр пустой (или не верный или еще что-то). Необходимо прервать f3, вернув в f2 что-то осмысленное. Прервать f2, вернув в f1 и наконец прервать f1, вернув на клиента нечто, что скажет клиенту, что произошла ошибка и какая это ошибка....... как вариант - написать хранимки на сях...там всё это можно реализовать. и код возврата (строка, код) и механизация эксепшенов самого языка и абортирование всего запроса, и создание сиквол подзапросов...короче говоря - на вкус и цвет... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 17:40 |
|
||
|
Обработка исключений или иной механизм.
|
|||
|---|---|---|---|
|
#18+
си это не мое. Вот провел эксперимент. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. При вызове второй функции если раскомментировать raise exception 'шозанах?'; и убрать следующие строки, в приложении на джаве (ну и в пгАдмин) ловится мое сообщение, код 0, state = P0001. Если оставить как есть - код и стэйт тот же, сообщение стандартное. Если ошибку вообще не ловить, то код тот же, стэйт 22012, сообщение стандартное. Таким образом, по "стэйт" можно понять - кто генерил эксепшн и в зависимости от этого копать сообщение. В него можно включить в каких-нибудь тэгах мой внутренний код ошибки и сообщение, если нужно. Например делать так #ERR01# user code is empty Далее разбирать регуляркой и ву а ля... Мож я чего-то не заметил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 19:04 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34490964&tid=2005506]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 431ms |

| 0 / 0 |
