q - 使用 try catch 加载脚本

ten*_*con 3 kdb q-lang

我有一个 aq 脚本C:\some\path\startup.q,可以将其他几个 q 脚本加载到当前会话中,如下所示

\l C:\some\other\path\script1.q
\l C:\some\other\path\script2.q
\l C:\some\other\path\script3.q
Run Code Online (Sandbox Code Playgroud)

现在,我可能想检查多个路径等script1.q。例如,当我处于部署环境而不是本地环境中时,这些路径是不同的。所以我想尝试捕获负载操作符

@[\l;C:\some\other\path\script1.q;`errormessage]
Run Code Online (Sandbox Code Playgroud)

这当然是无稽之谈。但我在 q 中找到了此处system描述的命令。例如

\w / lists memory usage
system "w" / same command
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于\l

system "l C:\some\path\startup.q"
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

Jam*_*tle 5

您需要转义反斜杠或使用 Unix 风格的路径,例如

system "l C:/some/path/startup.q"
Run Code Online (Sandbox Code Playgroud)

因此,对于异常处理:

@[system; "l C:/some/path/startup.q"; `errormsg]
Run Code Online (Sandbox Code Playgroud)