运行 函数时如何跳过 kdb 中的错误?

how do I skip the error in kdb when running a function?

func:raze {select compTypeOrigin from .get.order[2021.10.01;string x]}

list:(``abc`def`ggh``eef)

当我运行这个函数工作时

raze {select compTypeOrigin from .get.order[2021.10.01;string x]} `abc

但是当它为空(`)时我得到了类型错误,可能是由于函数 .get.order

我尝试运行具有受保护评估的函数

@[func;each list[0 + til 6];show]

但是没用 我怎样才能跳过错误?

我认为您需要将 each (') 带入受保护的计算之外。试试这个语法:

q)f:{x*x}
q)list:(1;`a;3)
q)@'[f;list;{x}]
1
"type"
9

func目前不是一个函数,而是一个混合列表。 raze 应该放在函数内部,使其成为一个函数。

错误陷阱仅在函数执行期间捕获错误。在您的情况下,错误是在 each list[0 + til 6] 期间的参数设置期间预先抛出的。抛出错误的原因是因为 each 需要两个参数(一个运算符和参数)并且只提供了一个。

/ func is currently not a function, but a mixed list
q)type func
0h
/ put the raze inside the lambda
func:{raze select compTypeOrigin from .get.order[2021.10.01;string x]}
/ type now 100h (lambda)
q)type func
100h
/ move the each outside
@[func;;show] each list[0 + til 6]