【发布时间】:2019-02-20 00:33:13
【问题描述】:
我有一个类似下面的简单代码来测试 Erlang 如何处理异常。 throw 和 catch 的 **** 参考。
-module(exception).
-export([sum/2]).
-export([is_odd/1]).
sum(A, B) ->
case is_odd(A) of
odd ->
2*A+B;
Result ->
Result
end.
is_odd(A) ->
case is_integer(A) of
true ->
odd;
_ -> ****({error, "Input error"})
end.
当我用 throw 运行透析器时,它显示警告:
exception.erl:9: 变量 Result 自上一次以来永远无法匹配 子句完全覆盖了“奇数”类型
可以通过添加来修复此警告
案件捕获
为了功能乐趣/2。
当我用 catch 运行透析器时,透析器成功通过。
我对接球和投掷有点好奇。我们应该抛出或捕获哪种情况?
【问题讨论】:
标签: error-handling erlang runtime-error dialyzer