我有一个像下面这样的简单代码来测试 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 运行透析器时,透析器成功通过。
我想知道接球和投掷。我们应该抛出或捕获哪种情况?