使用 APEX_ERROR.ADD_ERROR 与 RAISE_APPLICATION_ERROR

Using APEX_ERROR.ADD_ERROR vs RAISE_APPLICATION_ERROR

有人可以向我解释使用 APEX_ERROR.ADD_ERRORRAISE_APPLICATION_ERROR 之间的区别吗?使用一个与另一个相比有什么缺点(如果有的话)?或者有什么优势?在错误消息中呈现 HTML 代码是 APEX_ERROR.ADD_ERROR 的唯一优势吗?两者似乎都在页面顶部显示错误消息。除了呈现 HTML 之外,我看到的唯一区别是使用 APEX_ERROR 我可以指定显示错误的位置。有什么我想念的吗?

虽然结果看起来相似,但它们是不同的东西,目的不同,所以两者都没有任何优点或缺点。

APEX_ERROR.add_error 是一个 APEX API 调用,允许您以编程方式将错误消息注入堆栈以向用户报告。

RAISE_APPLICATION_ERROR 是一个 PL/SQL 触发自定义 exception 的命令(事后看来它应该有被称为 RAISE_APPLICATION_EXCEPTION 以避免混淆......)。与任何 PL/SQL 异常一样,如果您的 PL/SQL 代码没有处理或抑制它,APEX 将像任何其他错误消息一样简单地向用户显示它。

看起来在最新的 APEX 版本中 RAISE_APPLICATION_ERROR 页面进程不会向最终用户显示。错误文本仅对开发人员可见。用户看到带有调试 ID 的通用联系人支持。