error-handling - 是否可以检索引发错误的命名空间?

标签 error-handling xquery basex

当我从 XQuery 查询中引发错误时,例如:

error( fn:QName( 'http://example.com', 'XMPL0001' ), 'Conflict' )

... BaseX 返回以下内容(无论是在与服务器通信时,还是从 GUI 中)
Stopped at ., 1/7:  
[XMPL0001] Conflict

是否也可以检索错误的 namespace (在本例中为 http://example.com )?

我正在使用自定义的 PHP 客户端,我想使用此信息来防止与我的自定义错误代码可能(将来)发生冲突并解析错误以抛出标准 BaseX\Exception或自定义 SomeNamespace\Exception ,取决于错误的命名空间。

当然,我可以简单地使用不同于典型 ABCD1234 的错误代码模式。 XQuery 模式,以防止可能的( future )错误代码冲突,但命名空间的可能使用对我更有吸引力,因为我可以定义一个统一的 Exception接口(interface),例如:
interface ExceptionInterface
{
    public function getCategory(); // the 4 alpha character part
    public function getCode();  // the 4 digit part
}

顺便说一句,我目前正在使用 BaseX 7.7.2。

最佳答案

是的,您可以使用 a few variables in the error namespace 检索有关错误的信息。 ,它们在 try-catch 语句的范围内,如下所示:

declare namespace err = "http://www.w3.org/2005/xqt-errors";

try {
    error( fn:QName( 'http://example.com', 'XMPL0001' ), 'Conflict' )
}
catch * {
    namespace-uri-from-QName($err:code)
}

这假定您使用的是 XQuery 3.0。

关于error-handling - 是否可以检索引发错误的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38119198/

相关文章:

java - undefined variable 上的 BaseX XQJ API 错误,而变量已定义

php - 代码点火器form_validation不起作用

PHP 忽略错误并继续处理

go - 从 RabbitMQ 队列读取时如何检测错误

java - 如何记录错误级别为ERROR的消息

java - 用于定义类似于 XQuery 或 SQL 语句的规则和操作的 UI

xquery - 如何通过 Xquery 映射调整我的组?

xquery - 如何从查询id中获取查询?

xquery - 如何在不创建数据库的情况下访问 BaseX 中的文件?

xpath - XQuery和BaseX-如何将输出存储到组合框?