如何在 Azure 逻辑应用中抛出异常?
How to throw an exception in Azure Logic Apps?
是否可以在逻辑应用中抛出异常?
具体来说,我试图在范围内抛出异常。然后在范围之后的 运行 中,我将检查它是否失败并检查它是否有错误。我尝试在范围内使用终止,但这会终止整个逻辑应用程序 运行.
不,没有直接类似于 C# 中的 throw
的操作或连接器。
你现在最接近的是做一些事情,比如使用另一个 LogicApp 而不是你可以从中 return 特定状态代码的范围。
在 Logic App 或其小兄弟 Power Automate / Microsoft Flow 中似乎仍然没有此选项。
我想出并在某些流程中使用的方法是,我只是为我知道的事情添加一个操作,因为事实会失败。
最简单的(并且可能是最便宜的,因为逻辑应用程序中的内置操作成本更低,即使我们在这里谈论的是美元的一小部分)可能是初始化一个变量,例如称为整数类型的 ThrowException。
然后在我希望我的流程失败的任何地方添加一个 "Set variable" 操作,我将值(记住它是整数类型)设置为任何 string表达式。我只是使用表达式 string('Exception').
Simple example screenshot
由于值是通过表达式设置的,因此这仍然是一个有效的模板,但在实际设置值时会在运行时失败。
在此之后,只需使用并行分支,并像往常一样在适当的 运行 设置之后。
快速回答 (TL;DR)
- 问题:MSFT Azure 逻辑应用抛出异常
- 解决方法:使用逻辑应用范围元素模拟抛出异常
- 创建一个范围元素以用作您的“try-catch”块
- 使用无效命令强制范围元素失败以模拟异常
- 允许范围元素自然失败,这也将算作异常
详细解答
上下文
- MSFT Azure 逻辑应用工作流
- 截至 2020-06-14 的实时版本
问题
- 场景: 开发人员希望在逻辑应用程序中抛出异常或使用 try-catch 语义
解决方案
- 截至撰写本文时,产品的实时版本不支持此功能。有一个解决方法。
解决方法
- 使用逻辑应用范围元素
- 在范围元素内添加条件语句
- 如果条件语句满足失败条件,用故意无效的命令强制异常
- 例如创建一个值为
int('__ERROR__')
的变量赋值
- 如果条件语句不满足失败条件,什么也不做
- 逻辑应用的其余部分由两条路径组成
- 第一个路径在范围元素成功时运行
- 第二条路径在范围元素失败时运行(失败、跳过、超时)
例子
- 创建一个范围元素作为“try-catch”块
- 使用无效命令创建可变组合元素
int('__ERROR__') ## this will cause the enclosing scope to fail
## the string __ERROR__ cannot be cast to integer
- 响应包含异常的 Scope 元素的退出状态
另见
- 有关强制异常的相关 SO 回答
作为更新的解决方案,我们可以使用终止控件,终止控件有 3 种状态:失败、已取消和成功。
是否可以在逻辑应用中抛出异常?
具体来说,我试图在范围内抛出异常。然后在范围之后的 运行 中,我将检查它是否失败并检查它是否有错误。我尝试在范围内使用终止,但这会终止整个逻辑应用程序 运行.
不,没有直接类似于 C# 中的 throw
的操作或连接器。
你现在最接近的是做一些事情,比如使用另一个 LogicApp 而不是你可以从中 return 特定状态代码的范围。
在 Logic App 或其小兄弟 Power Automate / Microsoft Flow 中似乎仍然没有此选项。
我想出并在某些流程中使用的方法是,我只是为我知道的事情添加一个操作,因为事实会失败。
最简单的(并且可能是最便宜的,因为逻辑应用程序中的内置操作成本更低,即使我们在这里谈论的是美元的一小部分)可能是初始化一个变量,例如称为整数类型的 ThrowException。 然后在我希望我的流程失败的任何地方添加一个 "Set variable" 操作,我将值(记住它是整数类型)设置为任何 string表达式。我只是使用表达式 string('Exception').
Simple example screenshot
由于值是通过表达式设置的,因此这仍然是一个有效的模板,但在实际设置值时会在运行时失败。 在此之后,只需使用并行分支,并像往常一样在适当的 运行 设置之后。
快速回答 (TL;DR)
- 问题:MSFT Azure 逻辑应用抛出异常
- 解决方法:使用逻辑应用范围元素模拟抛出异常
- 创建一个范围元素以用作您的“try-catch”块
- 使用无效命令强制范围元素失败以模拟异常
- 允许范围元素自然失败,这也将算作异常
详细解答
上下文
- MSFT Azure 逻辑应用工作流
- 截至 2020-06-14 的实时版本
问题
- 场景: 开发人员希望在逻辑应用程序中抛出异常或使用 try-catch 语义
解决方案
- 截至撰写本文时,产品的实时版本不支持此功能。有一个解决方法。
解决方法
- 使用逻辑应用范围元素
- 在范围元素内添加条件语句
- 如果条件语句满足失败条件,用故意无效的命令强制异常
- 例如创建一个值为
int('__ERROR__')
的变量赋值
- 例如创建一个值为
- 如果条件语句不满足失败条件,什么也不做
- 逻辑应用的其余部分由两条路径组成
- 第一个路径在范围元素成功时运行
- 第二条路径在范围元素失败时运行(失败、跳过、超时)
例子
- 创建一个范围元素作为“try-catch”块
- 使用无效命令创建可变组合元素
int('__ERROR__') ## this will cause the enclosing scope to fail ## the string __ERROR__ cannot be cast to integer
- 响应包含异常的 Scope 元素的退出状态
另见
- 有关强制异常的相关 SO 回答
作为更新的解决方案,我们可以使用终止控件,终止控件有 3 种状态:失败、已取消和成功。