是否可以检索引发错误的命名空间?
Is it possible to retrieve the namespace of a raised error?
当我从 XQuery 查询中引发错误时,例如:
error( fn:QName( 'http://example.com', 'XMPL0001' ), 'Conflict' )
... 以下内容由 BaseX 返回(无论是在与服务器通信时,还是从 GUI 内部)
Stopped at ., 1/7:
[XMPL0001] Conflict
是否可以通过某种方式检索错误的命名空间(在本例中 http://example.com
)?
我正在使用自定义的 PHP 客户端,我想使用此信息来防止可能(将来)与我的自定义错误代码发生冲突,并解析错误以抛出标准 BaseX\Exception
或自定义 SomeNamespace\Exception
,具体取决于错误的命名空间。
当然,我可以简单地使用另一种错误代码模式而不是典型的 ABCD1234
XQuery 模式,以防止可能的(未来)错误代码冲突,但是命名空间的可能使用对我更有吸引力,因为这样我就可以定义一个统一的Exception
接口,比如:
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。
当我从 XQuery 查询中引发错误时,例如:
error( fn:QName( 'http://example.com', 'XMPL0001' ), 'Conflict' )
... 以下内容由 BaseX 返回(无论是在与服务器通信时,还是从 GUI 内部)
Stopped at ., 1/7:
[XMPL0001] Conflict
是否可以通过某种方式检索错误的命名空间(在本例中 http://example.com
)?
我正在使用自定义的 PHP 客户端,我想使用此信息来防止可能(将来)与我的自定义错误代码发生冲突,并解析错误以抛出标准 BaseX\Exception
或自定义 SomeNamespace\Exception
,具体取决于错误的命名空间。
当然,我可以简单地使用另一种错误代码模式而不是典型的 ABCD1234
XQuery 模式,以防止可能的(未来)错误代码冲突,但是命名空间的可能使用对我更有吸引力,因为这样我就可以定义一个统一的Exception
接口,比如:
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。