powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / обработка ошибок в хп
6 сообщений из 6, страница 1 из 1
обработка ошибок в хп
    #39620547
alfangur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обрабатываю ошибки таким образом:
CODE
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE OR REPLACE FUNCTION myfunction(myarguments) RETURNS myresult AS
DECLARE
	ERROR_EXCEPTION text;
	ERROR_STATE text;
	ERROR_MESSAGE text;
	ERROR_DETAIL text;
	ERROR_HINT text;
	ERROR_CONTEXT text;
	-- VARIABLES --
BEGIN
	-- CODE --
	-- RETURN result;
EXCEPTION THEN OTHERS THEN
	GET STACKED DIAGNOSTICS
			ERROR_STATE = RETURNED_SQLSTATE,
			ERROR_MESSAGE = MESSAGE_TEXT,
			ERROR_DETAIL = PG_EXCEPTION_DETAIL,
			ERROR_HINT = PG_EXCEPTION_HINT,
			ERROR_CONTEXT = PG_EXCEPTION_CONTEXT;
		ERROR_EXCEPTION = format(E'STATE: %s\nMESSAGE: %s\nDETAIL: %s\nHINT: %s\nCONTEXT: %s', ERROR_STATE, ERROR_MESSAGE, ERROR_DETAIL, ERROR_HINT, ERROR_CONTEXT);
	-- ERROR_EXCEPTION transfer to handler error
	-- RETURN default result at error
END;
$$
LANGUAGE plpgsql VOLATILE;


таких манипуляций мне хватает для того чтобы обработать ошибку и в дальнейшем ее исправить
немного тяжело каждый раз использовать такую конструкцию в функции для обработки ошибок.

есть несколько вопросов:
1. можно ли уменьшить код отлова ошибки? если да, то как?
2. может быть я что-то не учел в отлове ошибок? подскажите что?
3. есть ли у вас какие то "лайф хаки, функции обертки" по отлову ошибок?
4. может мой подход не правильный?
...
Рейтинг: 0 / 0
обработка ошибок в хп
    #39620594
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alfangur,

обработка ошибки в плпгскл -- это неявный скл-сейвпойнт (на последнем бегине) -- и как следствие -- изменение номера транзакции (сабтранзакции).

что в высоконагруженных проектах с большим объемом и большим темпом роста счетчика транзакций обостряет проблему фриза. до 9.6. -- крайне остро.

т.е.
1. следует избегать перехвата ошибок "вообще". заменяя её пречеками (например читкой системных) и т.п. вещи.
2. перехватчики ставить на узкие обходные пути, не перекрытые обычным чеком. (с тем, чтобы сессия попадала на сейвпойнт в крайнем случае)

что идёт поперек желания перехватить и обработать всё, что только можно.

а некоторые вещи из 2 осложнены системными багами пг
(таблица может быть видна в системных, но недоступна для дмл -- в силу неявной ридкоммитодности ддл при любом уровне изоляции исполнившей транзакции).
...
Рейтинг: 0 / 0
обработка ошибок в хп
    #39620599
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alfangurнемного тяжело каждый раз использовать такую конструкцию в функции для обработки ошибок.


как следствие -- в большинстве хранимок перехватчики (всего) -- вредны.
и желание их везде воткнуть -- вредительство и диверсия.
(по крайней мере в пг пока -- при сущ-ей реализации обработки ошибок в плпгскл / существующей зависимости объемов фриза от прироста счетчика транзакций )


по возможности отдавайте ошибки приложению(ям).

исключения -- длинные транзакции , пакетные и т.п. работы.
всё имхо.
...
Рейтинг: 0 / 0
обработка ошибок в хп
    #39621075
alfangur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
благодарю за информативный ответ.
так глубоко не задумывался над проблемой.
автор1. следует избегать перехвата ошибок "вообще". заменяя её пречеками (например читкой системных) и т.п. вещи.что такое "пречеками", "читкой системных"? сомневаюсь в правильности своей трактовки!
...
Рейтинг: 0 / 0
обработка ошибок в хп
    #39621133
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alfangurблагодарю за информативный ответ.
так глубоко не задумывался над проблемой.
автор1. следует избегать перехвата ошибок "вообще". заменяя её пречеками (например читкой системных) и т.п. вещи.что такое "пречеками", "читкой системных"? сомневаюсь в правильности своей трактовки!

чессгря учить детей колхозу -- крайне некомфортная позиция

пишите везде где вам надо честные перехваты.

а по мере проблем со скоростью/или фризом БД -- начинайте думать, где можно обойтись без "общего" обработчика (с перехватом в рукаве "редких случаев"). по возможности -- максимально честно. (вы попадете в зависимость от принятых предположений. чем шире допуски -- тем жестче будет посадка)
...
Рейтинг: 0 / 0
обработка ошибок в хп
    #39621221
alfangur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
взял на заметку ваши слова, пересмотрю свой подход.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / обработка ошибок в хп
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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