抛出(Throw)
本文介绍用于模拟 抛出(Throw)错误处理指令的替代方案与变通方法。
替代方案
要有条件地抛出错误,您可以配置一个模块,使其在操作期间可选地故意失败。一种可能性是使用 JSON > 解析 JSON(Parse JSON) 模块,配置为可选地抛出错误(本例中为 BundleValidationError):

然后,您可以将以下错误处理指令之一附加到错误处理路由,以:
- 强制场景执行停止并执行回滚阶段:回滚(Rollback)
- 强制场景执行停止并执行提交阶段:提交(Commit)
- 停止路由的处理:跳过(Skip)
- 停止路由的处理并将其存储在未完成执行队列中:重试(Retry)
以下示例展示了回滚(Rollback)指令的使用:

变通方法 - 使用 HTTP 模块
用例 - 如果使用重试(Retry)指令未找到记录,则在一段时间后重试。通常,当您的记录没有立即更新且您希望在自动化中稍后处理它时,这至关重要。使用此重试(Retry)指令可以简化设置复杂度。
当前障碍 - Make 不提供允许您轻松有条件地生成(抛出)错误的模块。
为了让您更好地理解,以下是未经修改的当前设置:此场景在 Zendesk 中搜索,如果没有找到,它不会强制抛出错误。若要再次搜索,您需要实施一个复杂的过程来保存记录。

解决方案 - 要有条件地抛出错误,您可以将想要抛出错误的模块替换为 HTTP 模块,然后在第二个场景中执行搜索,使用 Webhook 将 HTTP 模块链接到第二个场景。如果未找到结果,您可以自定义模块以抛出错误
场景一 -
- 将想要抛出错误的模块替换为 HTTP > 发出请求(Make a Request)模块
- 在查询参数中配置 URL,您将从自定义 Webhook 模块获取该 URL,并添加一个可选查询参数以搜索电子邮件
- 启用高级设置并勾选“将所有状态评估为错误”(evaluate all the states as errors)。

- 在该 HTTP 模块中添加重试(Retry)处理程序,并配置设置为稍后运行。

场景 2 -
- 设置 Webhooks > 自定义 Webhooks 作为触发器并复制 URL,在前几步所示的 HTTP 模块中使用它。
- 此处使用 Zendesk > 搜索用户模块,使用 HTTP 模块中的参数执行查询。启用“即使模块未返回结果也继续执行路由”(Continue the execution of the route even if the module returns no results)
- 添加一个路由器并创建两条路由
- 随后设置 Webhook 响应模块
以下示例返回结果 - 您会注意到当 Zendesk 模块执行 API 时,它不会发送任何错误消息,但在操作中,我们使用 HTTP 模块复制该错误。
