使用检查异常的语言

Languages that use checked exceptions

我很好奇,除了 Java 之外还有其他语言使用检查异常吗?

我确实尝试查找有关此的信息,但找不到任何答案。

您找不到任何其他使用检查异常的语言的信息的原因是他们从 Java 的错误中吸取了教训。

编辑:因此,澄清更多的检查异常完全是一件 Java 事情,理论上听起来是个好主意,但实际上在消费函数和被调用函数之间建立了紧密耦合消费。这也使得在可以处理的地方处理异常变得更加繁琐。相反,您必须在抛出异常和实际处理异常之间的每个函数中捕获并重新抛出。我可以在这里重写所有内容,但我认为 post 很好地解释了为什么检查异常确实不是一个好主意。

https://blog.philipphauer.de/checked-exceptions-are-evil/

由于在 Java 中使用它们的糟糕体验,已检查的异常在主流语言中不是常见功能。然而,Java 并不是实现它们的唯一语言,仅仅因为 Java 的实现有问题并不意味着它们通常是一个坏特性。

Nim 已检查异常。

已检查异常已实现为 Purescript library

检查异常可以在 Koka 中实现,方法是为其创建自定义效果。

Java 中检查异常的一些常见问题可以通过更好的设计来处理。

类型签名中“throws”子句的传播导致由于必须更新方法签名而可能导致大量重构,这可以通过完整的类型推断来解决。 Haskell 有一个很好的方法来解决类型 类 的问题(它以与检查异常在类型签名中相同的方式传播——并且也可以用于实现类型化异常)与 部分类型签名——本质上留下类型“空白”的任意部分供编译器推断。

更高阶的问题 functions/lambdas 可以通过 polymorphism/generics 解决。在通过效果系统(如 Koka)实现检查异常的语言中——效果多态性是解决问题的一种特别好的方法。

Haskell、Koka、Purescript 和 Nim 都是功能强大的语言,经常使用 lambda 和高阶函数,并且它们没有 Java 的检查异常问题.