微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure管道task.exec不会按预期返回进程的退出代码,但会捕获非零退出代码的块

如何解决Azure管道task.exec不会按预期返回进程的退出代码,但会捕获非零退出代码的块

我在 sample.ts (打字稿)中有以下代码,其中exe始终返回退出代码0(成功),1(失败)或2(未知错误)。我希望 validateFunc 调用能够正确返回退出代码并降落在下一行,但是它会转到catch块以获取非零退出代码。知道导致这种行为的原因是什么吗?

try

{

...{some code}

 let exitCode = await validateFunc("sample1","sample2");

if(exitcode!=0)
{
  // expecting toland here when tool returns non-zero exit code
}

..{some code here}

}
catch (error)

{

 // Above call to validateFunc lands here for non-zero exit codes

}

export async function validateFunc(param1: string,param2: string) {

   
      {some code here}

    return await tl.exec(`${validationToolRoot}\\<Exename>`,validationArgs);
}

解决方法

检查 $ ErrorActionPreference 的值。如果不是Stop,则捕获将无法运行。

尝试在尝试块之前添加$template->template_json = json_decode($template->template_json); ,它应该可以正确捕获错误。

有关更多详细信息,请查看此错误:Powershell try block not working on VSTS build

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。