azure - Azure 函数不会在 Push-OutputBinding 中使用 Stop ErrorAction 引发终止错误
问题描述
我正在尝试构建一个简单的 try-catch 语句,如下所示,但该 catch 块永远不会被执行
try {
Push-OutputBinding -ErrorAction Stop -Name outputQueueItem -Value $Object
}
catch {
Write-Error "Catching Error"
# code to catch the error
}
ErrorAction Stop
问题是除了我有参数的事实之外,天蓝色函数没有抛出预期的错误作为终止。因此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
,这样您就可以实现自己的错误处理。
推荐阅读
- javascript - 使用@wordpress/create-block 时如何使用edit.js 和save.js
- java - 错误:E/AndroidRuntime:致命异常:主要
- javascript - 使用PNG的Google Maps javascript API自定义可拖动标记在Safari中不可见
- r - ANOVA(rstatix)中“mutate()”输入“数据”的问题
- c# - c# xmldocument 获取特定节点之后的所有兄弟节点
- github-actions - 将 GitHub Action 发布到 Marketplace:意外值“步骤”
- kubernetes - ADO Pipeline Environment Kubernetes On-Prem Resource Connection failed with x509: certificate signed by unknown authority
- python - 如何将数组与数组列表进行比较?
- sparql - 未绑定变量的可选 Sparql 语句在 Stardog 中不起作用
- html - 如何使用 HTML 和 CSS 创建一个彩虹色的圆圈?