什么情况会抛出异常“scala.util.control.BreakControl”?

2024-02-03

我的代码抛出例外 scala.util.control.BreakControl,但我不知道为什么。有人知道吗?

我使用的一些地方breakable and break,但我不知道为什么会导致这个异常。

片段1

breakable {
                for (quaOfLine <- dataOfLine) {
                    try {
                        // ...   some other code

                        if (judgeTime(jsonQua.getInt("startTime")) == judgeTime(jsonLine.getInt("startTime"))) {

                           // ... some other code
                            if (quaRRIDs.length / RRIDs.length.toFloat >= 0.8 || quaRRIDs.length / RRIDs.length.toFloat <= 1.2) {
                                var count = 0
                                breakable {
                                    for (rrid <- RRIDs) {
                                        for (quaRRID <- quaRRIDs) {
                                            if (rrid == quaRRID) {
                                                count += 1
                                                break                   //break
                                            }
                                        }
                                    }
                                }
                                if (count / RRIDs.length.toFloat >= 0.8) {
                                    sameLine = qualifier + "::" + value
                                    break           // break
                                }
                            }
                        }
                    } catch {
                        case e: Throwable => e.printStackTrace
                    }
                }
            }

片段2

breakable {
                for (quaOfDest <- dataOfDest) {
                    try {
                        val qualifier = quaOfDest.getString("qualifier")
                        val value = quaOfDest.getString("value")
                        val jsonQua = new JSONObject(value)


                        val (quaSLon, quaSLat, quaELon, quaELat) = getSELonLat(jsonQua)

                        if (jsonQua.getInt("timeBucket").toString == judgeTime(jsonLine.getInt("startTime"))) {

                            someDest = qualifier + "::" + value
                            break     //break
                        }
                    } catch {
                        case e: Throwable => e.printStackTrace
                    }
                }
            }

scala.util.control.BreakControl被方法抛出scala.util.control.Breaks.break。它用于模拟break来自 Java 的声明。它的使用方式如下:

import scala.util.control.Breaks.{break, breakable}

breakable {
  for(i <- 1 until 10) {
    println(i)
    if(i > 5) break
  }
}

BreakControl是一个私有类,所以通常它不会被其他任何东西抛出break.

这也意味着在一个breakable阻止你不应该抓住的BreakControl你自己。你break里面一个try阻止然后捕获所有Throwables并打印它们。BreakControl is a Throwable所以它会被你抓住而不是被breakable method.

如果你真的想捕获全部Exceptions/Throwables,你应该这样做:

import scala.util.control.Breaks.{break, breakable}
import scala.util.control.ControlThrowable

breakable {
  for(i <- 1 until 10) {
    try {
      println(i)
      if(i > 5) break
    } catch {
      case c: ControlThrowable => throw c
      case t: Throwable => t.printStackTrace
    }
  }
}

Scala 标准库还包括针对此类情况的特殊构造,它可以让您捕获所有Throwables除了致命的,比如OutOfMemoryError or StackOverflowError,以及延伸的所有内容ControlThrowable:

import scala.util.control.NonFatal

try {
  //do stuff
} catch {
  case NonFatal(e) => e.printStackTrace
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么情况会抛出异常“scala.util.control.BreakControl”? 的相关文章

随机推荐

  • iPhone core蓝牙中央管理器发送数据到外设

    我想将数据从 iPhone 发送到被发现并连接的蓝牙设备 我指的是this http weblog invasivecode com post 39707371281 core bluetooth for ios 6 core blueto
  • 方形网格 - XML

    在我的研究中 我必须编写一个 Android 应用程序来从气象站检索天气数据 这些将显示在块中 这些块将分成 4 列和 2 行 所以我想创建一个 4 列 2 行的方形网格来提供块 有人可以提供解决方案来帮助我创建这个网格吗 有很多选择 1
  • 为什么这段代码在 Windows 和 Linux 上打印出不同的结果?

    此代码在 Windows 和 Linux 之间打印不同的字符串 test py print join str i for i in range 10000 平台 x86 64 Linux 4 4 0 17763 微软Python版本 3 7
  • 在 C# 中将字节转换为二进制字符串

    在 c 中我正在转换byte to binary 实际答案是00111111但给出的结果是111111 现在我真的需要显示前面的 2 个 0 谁能告诉我该怎么做 我在用 Convert ToString byteArray 20 2 字节值
  • 适用于更大图像的 Android Image Getter

    我已使用所有标准网络相关代码来获取有关的图像45KB to 75KB但所有这些方法都失败了 对于大约的文件来说工作正常3 5KB图像的大小 我怎样才能实现下载图像45 75KB为了在 Android 中的 ImageView 上显示它们以进
  • 在 SpriteKit 项目中使用精灵图集、纹理图集或资源目录

    Apple 在 SpriteKit 项目中推荐的资源组织方式在引擎的历史进程中发生了很大变化 旧方法中也存在缺陷 阻碍了这些实践的实施并需要解决方法 SO 上的旧问答充满了过时的信息或被有关处理不再存在的错误的信息所混淆的信息 需要在 SO
  • 对一维数据进行最佳聚类? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有人有一篇论文解释如何CKmeans 1d dp http cran r project org
  • 一个队列上有多个 Azure Webjob 实例

    我正在寻找一种方法让我的 azure webjob 的多个实例一起运行并清除我的队列 我们应用程序的功能之一是减少用户在其网站上的每次页面浏览的信用 由 ajax 调用 目前 我们有近 600 个此类网站 其网站的每个页面视图都会生成一个调
  • 将图标添加到从右到左的 ListView 项目会导致图标在 C# WinForms 中翻转

    我有一个ListView Its RightToLeft属性设置为Yes和它的RightToLeftLayout被设定为True The ListView填充了目录中的文件 在我的代码中 我使用以下命令获取文件的适当图标System Dra
  • Spring Data Neo4j 4 和可分页@QueryResult

    我正在尝试介绍Pageable支持我通过 SDN 4 存储库方法进行的自定义 Cyper 查询 Query value MATCH parentD CONTAINS gt childD Decision ru CREATED BY gt u
  • 如何在MSVC中使用MingW编译的库?

    我用 MingW MSYS 编译了几个库 生成的静态库始终是 a 文件 当我尝试将库与 MSVC 项目链接时 Visual Studio 抛出 无法解析的外部符号 这意味着 a 静态库与 MS C 链接器不兼容 我认为它必须转换为 MSVC
  • Aurelia JS - 迭代子元素(kendo UI)?

    考虑这里给出的基本示例 https aurelia ui toolkits github io demo kendo samples slider basic use https aurelia ui toolkits github io
  • :footnotes 扩展在 Redcarpet Ruby gem 中不起作用

    我一定错过了一些非常明显的东西 我无法获得与红地毯一起使用的脚注 我有3 0 0版本 gt gem list redcarpet LOCAL GEMS redcarpet 3 0 0 我正在尝试来自的代码Github 存储库上的测试代码 h
  • 如何创建 .htaccess 来显示 SVG?

    我正在测试一个在本地运行良好的网站 但是当我将其上传到我的 godaddy 服务器时 我的 SVG 没有在浏览器中呈现 经过一些网络搜索并与技术支持合作后 我了解到我需要在图像文件夹目录中配置一个 htaccess 文件才能正确显示 SVG
  • 分析 Rails 控制器操作

    在 Ruby on Rails 中分析控制器操作的最佳方法是什么 目前我正在使用蛮力方法扔进去puts Time now我认为之间的调用将成为瓶颈 但这感觉真的非常非常肮脏 必须有更好的方法 我不久前掌握了这项技术 发现它非常方便 当它就位
  • AWS ECS 的端口映射

    我是 ecr ecs ec2 的新手 我开始将我的应用程序部署到我购买的域 我的应用程序有一个前端和一个后端 我的前端在 localhost 3000 上运行 并在 localhost 5000 上调用其后端 api 本地计算机上的端口映射
  • 从命令行使用 schtasks,什么参数会将计算机从睡眠状态唤醒并执行任务

    该选项存在于 UI 中 但不存在于命令行中显示的帮助中 您是否通过以下方式创建新任务schtasks exe命令行 或更新现有任务 在维斯塔上 schtasks exe has an xml两者的选项 create and query 通过
  • extern char **environ 的定义在哪里?

    我们可以这样获取C中的环境变量 extern char environ int main int argc char argv int count 0 printf n while environ count NULL printf s e
  • ARKit的坐标系不稳定

    我在 AR 环境中加载模型并添加 ARAnchor 来稳定模型 当我将设备放在桌面上并稍后拿起时 模型的位置没有改变 但很快就会飞走 ARKit的坐标系会飞起来 不稳定 如何避免或处理这种情况 ARKit RealityKit世界跟踪系统基
  • 什么情况会抛出异常“scala.util.control.BreakControl”?

    我的代码抛出例外 scala util control BreakControl 但我不知道为什么 有人知道吗 我使用的一些地方breakable and break 但我不知道为什么会导致这个异常 片段1 breakable for qu