gpt4 book ai didi

Azure Function 不会在 Push-OutputBinding 中使用 Stop ErrorAction 引发终止错误

转载 作者:行者123 更新时间:2023-12-03 00:05:38 25 4
gpt4 key购买 nike

我正在尝试构建一个简单的 try-catch 语句,如下所示,但该 catch block 永远不会被执行

try {
Push-OutputBinding -ErrorAction Stop -Name outputQueueItem -Value $Object
}
catch {
Write-Error "Catching Error"
# code to catch the error
}

问题是,除了我有 ErrorAction Stop 参数之外,azure 函数不会抛出预期的终止错误。因此 catch 代码永远不会被执行。

输出日志:

[8/18/2020 9:42:11 PM] INFORMATION: 00:00:09.9511800
[8/18/2020 9:42:11 PM] Executed 'Functions.Monitor' (Failed, Id=6bf398bd-de2b-460f-a44b-db9838feff3f)
[8/18/2020 9:42:11 PM] System.Private.CoreLib: Exception while executing function: Functions.Monitor. Microsoft.WindowsAzure.Storage: Messages cannot be larger than 65536 bytes.

该错误是预料之中的,但是,catch 代码块从未执行。

运行时信息:

Azure Functions Core Tools (3.0.2630 Commit hash: beec61496e1c5de8aa4ba38d1884f7b48233a7ab)
Function Runtime Version: 3.0.13901.0

我还尝试更改变量$ErrorActionPreference = "Stop",但也不起作用。

最佳答案

您的脚本无法捕获此异常,因为它发生在脚本完成之后。 Push-OutputBinding 命令不会直接将数据写入 Azure 存储。相反,它只是将其存储在内部数据结构中,并且实际写入 Azure 存储的操作发生在函数完成后。

另请参阅:https://github.com/Azure/azure-functions-powershell-worker/issues/284

解决方法是将脚本更改为直接写入 Azure 存储,而不是调用 Push-OutputBinding,以便您可以实现自己的错误处理。

关于Azure Function 不会在 Push-OutputBinding 中使用 Stop ErrorAction 引发终止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63477100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com