.Q.hp 在 try-catch 中使用时出现错误

问题描述 投票:0回答:1

当尝试在 try-catch 中运行 .Q.hp (https://code.kx.com/q/ref/dotq/#hp-http-post) 时,我收到错误“.[k) {hmb[x;`POST;(y;z)]};[Ljava.lang.Object;@7c8be683;[Ljava.lang.Object;@724c1762;]"

我不确定我在这里做错了什么以及如何解决它,任何帮助将不胜感激

//defaine args
args:`channel`fallback`pretext`color`title`messageValue!("qatesting";"qatesting";"";"";(string .proc.hostip)," This is a test run, plz ignore";"");

//works fine
.Q.hp[webhookKey;"application/json";(.j.j raze (enlist (`channel`link_names`attachments)!(args[`channel];1b;((enlist (`fallback`pretext`color`fields)!(args[`fallback];args[`pretext];args[`color];((enlist (`title`value`short)!(args[`title];args[`messageValue];0b)))))))))]

//getting error
.[.Q.hp;(webhookKey;"application/json";(.j.j raze (enlist (`channel`link_names`attachments)!(args[`channel];1b;((enlist (`fallback`pretext`color`fields)!(args[`fallback];args[`pretext];args[`color];((enlist (`title`value`short)!(args[`title];args[`messageValue];0b))))))))));.lg.e[`slack_post_msg;"We have got an error when doing .Q.hp in .slack.post_msg"];]
".[k){hmb[x;`POST;(y;z)]};[Ljava.lang.Object;@7c8be683;[Ljava.lang.Object;@724c1762;]"

kdb
1个回答
0
投票

马特的评论是正确的。主要问题是

;
陷阱中额外的
.[;;]
以及缺少错误处理程序的包装器来延迟其执行。

更多地分解代码并使用命名变量可以帮助您更轻松地发现语法错误:

args:(webhookKey;
      "application/json";
      (.j.j raze (enlist (`channel`link_names`attachments)!(args[`channel];
       1b;
       ((enlist (`fallback`pretext`color`fields)!(
          args[`fallback];
          args[`pretext];
          args[`color];
          ((enlist (`title`value`short)! 
             (args[`title];args[`messageValue];0b))))))))))

errHandler:{[err]
 .lg.e[`slack_post_msg;
       "We have got an error when doing .Q.hp in .slack.post_msg: ",err]
 }

.[.Q.hp;args;errHandler]

我添加了

: ",err
,以便抛出的特定错误可以包含在错误日志中,这将有助于调试。

© www.soinside.com 2019 - 2024. All rights reserved.