跳到主要内容

Break(跳出)

提前离开所在循环。

用途

立即停止当前循环,从该循环的 Loop End 之后继续流程。主体里剩下的一切被跳过,不再运行任何轮次。

何时用

  • 找到了要找的东西,循环其余部分没有意义。
  • 没东西可处理了——空列表、屏幕上没有更多条目。
  • 某个守卫条件意味着循环该提前停。

何时不用

  • 结束整个流程——用 ReturnStop
  • 只跳过这一轮——用 Continue
  • 循环之外——Break 只在循环区域内有意义。

前提

Break 必须位于循环区域内。它属于最内层包围循环,编译期解析。

如何运行

Break 不携带用户接的出边。编译器把它改接到包围循环的 Loop End 之后的节点。

你不从 Break 画出边。路由是生成的。

设置

设置类型范围备注
Labelstring≤ 120 字符可选显示标签;无运行时效果

Break 没有功能性设置——它的行为完全取决于位置。

端口

端口备注
Success节点上存在,但不由用户接——编译器拥有它
Fatal配置错误。永不被走

Break 没有必接端口。把边接它;别接出。

基础示例

什么都没找到时停止扫描循环:

  • Find Image → Failure → Break

实际示例——有界搜索

循环有两个出口——轮数上限和 Break——之后流程从计数器判断发生了什么。

高级示例——带提前退出的重试区域

Break 把计数循环变成有界重试:

没有 Break,首次成功的尝试仍会烧掉剩下两轮。

最佳实践

  • 循环后的代码需要知道为何结束时,break 前设旗标。
  • 用 Label 字段写原因——"没了""到达目标"
  • 活干完就 Break,别让循环转到上限。
  • 把 Break 放进你想的那个循环。 嵌套循环里它作用于最内层。
  • 别从 Break 接出边。

性能笔记

  • Break 本身免费。
  • 它的性能价值是真的:第一轮后退出 5 轮循环省下四轮主体工作,检测型主体就是数秒。

内存笔记

  • 无分配。提前结束循环减少运行上下文里积累的节点结果。

常见错误

错误后果修复
用 Break 结束流程只离开循环Return
用 Break 跳一轮结束整个循环Continue
从 Break 接出边不是它的工作方式只接进
嵌套循环里 Break 放错只离开内层循环查区域
Break 前没设旗标下游不知循环为何结束先设旗标

故障排查

Break 不离开我想的循环。 它作用于最内层包围循环。移动它,或重构嵌套。

流程结束了而非循环后继续。 查 Loop End 之后接了什么——Break 路由到那里,没接则运行终止。

Break 像被忽略。 它多半不在被执行的路径上。确认到它的分支真的运行了。

FAQ

Break 有设置吗? 只有可选标签。

能在循环外用 Break 吗? 不能——只在循环区域内有意义。

Break 结束流程吗? 不。用 ReturnStop

怎么知道循环提前 break 了? Break 前设变量,或用 Loop End 的 iterationCount 聚合。

相关节点

  • Loop——Break 所退出的区域
  • Continue——改为跳一轮
  • Return——结束整个流程
  • Variable——记录循环为何结束

相关页面