【发布时间】:2021-05-06 22:38:14
【问题描述】:
我发现自己经常写这样的代码:
thing match {
case Case1 ...
case Case2 ...
case _ => throw new IllegalStateException(s"unexpected $thing")
}
有时我想要当案例不匹配时出现运行时错误。案例是一种断言。
有没有更好的方法来抑制穷举检查?
我不想使用[@unchecked](https://www.scala-lang.org/api/2.12.1/scala/unchecked.html),因为这也会禁用可达性检查,我确实想要。
【问题讨论】:
-
我个人认为你拥有它的方式更好,因为至少你可以设置一个更好的例外。如果您想减少样板文件,您可以使用部分函数编写自己的帮助程序。
-
你的做法有什么问题?
-
@texasbruce 这是很多重复,我每次都必须做
// $COVERAGE_OFF和// $COVERAGE_ON。我正在开发一个编译器,并且对 AST 有一定的期望,所以如果我的假设是错误的,我想尽快崩溃。让糟糕的 AST 无法表示似乎不值得,因为无论如何大型测试套件都会捕获意外的 AST。