Marklogic 我可以获取当前XQuery函数的名称吗?
我想在XQuery程序中记录当前函数的名称。有没有一种方法可以在不引发异常的情况下获取当前函数的名称 我可以通过抛出异常和记录堆栈帧信息来获取函数信息。但是有没有一种方法可以在不引发这样的异常的情况下获取当前函数名Marklogic 我可以获取当前XQuery函数的名称吗?,marklogic,xquery-3.0,Marklogic,Xquery 3.0,我想在XQuery程序中记录当前函数的名称。有没有一种方法可以在不引发异常的情况下获取当前函数的名称 我可以通过抛出异常和记录堆栈帧信息来获取函数信息。但是有没有一种方法可以在不引发这样的异常的情况下获取当前函数名 xquery version "1.0-ml"; declare function local:logStuff( $str as xs:string ) { try { fn:error() } catch( $ex ) { let $frame :=
xquery version "1.0-ml";
declare function local:logStuff( $str as xs:string )
{
try { fn:error() }
catch( $ex ) {
let $frame := ($ex/error:stack/error:frame)[2]
let $function as xs:string := $frame/error:operation
let $line as xs:numeric := $frame/error:line
let $column as xs:numeric := $frame/error:column
return
fn:concat(
"message: '", $str, "' In Function: ", $function,
" line: ", $line, " column: ", $column
)
}
};
declare function local:callingFunction()
{
local:logStuff( "I want to log this line of code with function info.")
};
local:callingFunction()
,
"And continue with the program ..."
就我个人而言,我不知道还有什么更优雅的方法。这也是JavaScript中使用的基本技术。我认为汇编所有这些运行时信息是昂贵的,这就是为什么它不容易获得的原因。你想干什么?也许有更好的方法。它将用于调试目的。输出数据或跟踪信息以提供接触点。