powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Обработка исключенией
8 сообщений из 8, страница 1 из 1
Обработка исключенией
    #36311745
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, может ли кто подсказать, как "красиво" обработать исключение, а то мое исключение теряется в массе сообщений АРЕХса.
...
Рейтинг: 0 / 0
Обработка исключенией
    #36311917
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvksqlru,

RTFBlog Roels Blog: Transform ORA-xxxx messages into something more user friendly in APEX - вместе с комментариями.
...
Рейтинг: 0 / 0
Обработка исключенией
    #36574749
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

Скажу так: решение тяжеловесно. А можно ли строку:
ORA-20999: ORA-20104: INVALID MESSAGE ORA-06512: at "ABY_SYSTEM.COMMON_P", line 26 ORA-01403: no data found ORA-01476: divisor is equal to zero

просто разбить на линии, без использования яваскриптов, каждая из которых начиналась бы с номера ошибки, например например как-то так:

Код: plaintext
replace(#MESSAGE#, 'ORA-', '<br/>ORA-' 
...
Рейтинг: 0 / 0
Обработка исключенией
    #36576514
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvksqlru,

0. В процессах, процедурах и прочем, где исключения обработать можно:
Код: plaintext
1.
2.
3.
4.
exception
  ...
  when others then
    dbms_output.put_line(regexp_replace(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE, chr( 10 ), '<br />'));
end;
1. В запросах, проверках, вычислениях, автоматических фетчах данных в поля формы и подобном этот способ использовать не получится. Потому всё же рекомендую присмотреться к варианту Роэла. Для простого форматирования ошибок тем же JS можно на нулевой странице добавить скрипт, который будет обрабатывать теги с классами ErrorPageMessage, t15Notification и теми, которые будете использовать в шаблонах.

Вариант 1 мне более симпатичен, потому что не всегда и не все ошибки обрабатываются в PL/SQL-коде.
...
Рейтинг: 0 / 0
Обработка исключенией
    #36576518
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLer
Код: plaintext
1.
2.
3.
4.
exception
  ...
  when others then
    dbms_output.put_line(/*regexp_*/replace(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE, chr( 10 ), '<br />'));
end;


Закомментировал огрехи копипаста. :)
...
Рейтинг: 0 / 0
Обработка исключенией
    #36576902
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

последние пару дней разбирал механизм обработки ошибок в АРЕХ. Из интересных деталей:
Класс ErrorPageMessage, имхо, определен харкодингом в пакете
Код: plaintext
WWV_FLOW
(привет от индусов?) таким образом "переопределить" его вряд ли получится, однако его можно либо скрыть либо усечь.

Переменная
Код: plaintext
APEX_APPLICATION.G_ERROR_MESSAGE_OVERRIDE
, которая представляет собой тело сообщения.

Секция ERROR в системном шаблоне страницы.

Таким образом соединив эти три компонента я получил приемлемую обработку исключений БД на стороне АРЕХ (см. рисунок).

Из не исследованных осталось обработка исключений на стороне клиента.

авторВариант 1 мне более симпатичен, потому что не всегда и не все ошибки обрабатываются в PL/SQL-коде.
Может есть какой-то пример?

PS Было бы интересно знать кто какие еще использует ухищрения.
...
Рейтинг: 0 / 0
Обработка исключенией
    #36577679
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvksqlruавторВариант 1 мне более симпатичен, потому что не всегда и не все ошибки обрабатываются в PL/SQL-коде.
Может есть какой-то пример?

Как пример, думаю, подойдёт вот это .

В шаблон страницы по умолчанию в секцию Footer вставляем перед самым концом какую-нибудь обработку. Например:
Код: plaintext
1.
2.
3.
4.
5.
<script type="text/javascript">
  var v = document.getElementsByClassName('ErrorPageMessage');
  v[ 0 ].innerHTML = "Произошли следующие ошибки: <br /> <div class='error-stack-container'>" + v[ 0 ].innerHTML.replace(/\n/g, "<br />") + "</div>";
</script>
</body>
</html>

В принципе, можно перенаправлять на любую свою страницу через изменение window.location, передавая ошибку в какой-нибудь элемент, и там показывать как заблагорассудится. Или через JS (+ jQuery) продолжать изменять стандартную страницу. :)
...
Рейтинг: 0 / 0
Обработка исключенией
    #36578044
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer, похоже, это то что нужно.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Обработка исключенией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]