【发布时间】:2017-10-17 22:17:23
【问题描述】:
elm声称zero-runtime-exceptions是其主要卖点之一(见official website),
但如果你停下来想一想,没有什么能阻止你除以零或内存不足。
elm 编译器的基本作用是强制您覆盖所有可能导致异常的路径。
例如:
import String exposing (toInt)
toIntOrZero s = case toInt s of
Err e -> 0
Ok val -> val
但这与java 中的infamous“检查异常”功能有何不同?
public static Integer toIntOrZero(String s) {
try { return Integer.valueOf(s); }
catch (NumberFormatException e) { return 0; }
}
我从未听说过任何声称 java 是零运行时异常的语言。
【问题讨论】:
-
Java 仍然有未经检查的异常。充其量你可以声称Java“具有成为零运行时异常语言的能力。
-
公平点,
elm中的所有大惊小怪都是关于程序员讨厌的“检查异常”功能,而微软选择不包含在c#中? -
不能说。不知道Elm,太久没用Java评论了。刚看到一个逻辑缺陷。对不起。
-
@UriGoren 您的问题是关于“零运行时异常语言”的。榆树并没有声称自己是那样的。他们使用“基本上”和“在实践中”等短语来表示接近于零。您的问题以 "
elm's claim of zero-runtime-exceptions" 开头,这是不正确的,因为他们实际上并没有声称拥有 zero 运行时例外。 -
在 elm repl 中,
1 / 0产生Infinity : Float,不是例外。
标签: java elm checked-exceptions