运行 函数时如何跳过 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]
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]