postgresql嵌套异常可能吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql嵌套异常可能吗?相关的知识,希望对你有一定的参考价值。
我在函数'public.main_function'中使用postgrest异常。在'others'例外,我还使用子函数来保存我的日志数据。
但我的子函数'public.something_went_wrong_log_creation'有时可能会出错。
如何在下面的“其他”异常中添加异常(嵌套异常)?
CREATE OR REPLACE FUNCTION public.main_function(request json)
RETURNS integer AS
$BODY$
BEGIN
-- statement 1
-- statement 2
-- statement 3
RETURN 1;
EXCEPTION
-- SOMETHING WENT WRONG
WHEN others
THEN
-- LOG SOMETHING WENT WRONG
PERFORM public.something_went_wrong_log_creation();
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
CREATE OR REPLACE FUNCTION public.something_went_wrong_log_creation()
RETURNS integer AS
$BODY$
BEGIN
-- statement 1
-- statement 2
-- statement 3
RETURN 1;
EXCEPTION
-- SOMETHING WENT WRONG
WHEN others
THEN
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
答案
您可以使用子块并将异常处理代码包装在其中。
CREATE OR REPLACE FUNCTION public.main_function(request json)
RETURNS integer AS
$BODY$
BEGIN
-- statement 1
-- statement 2
-- statement 3
RETURN 1;
EXCEPTION
-- SOMETHING WENT WRONG
WHEN others
THEN
BEGIN
-- LOG SOMETHING WENT WRONG
PERFORM public.something_went_wrong_log_creation();
RETURN 0;
EXCEPTION
WHEN others
THEN
RETURN -1;
END;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
以上是关于postgresql嵌套异常可能吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中修复“嵌套异常是 java.lang.ArrayIndexOutOfBoundsException:索引 2 超出长度 2 的范围” - postgresql 项目