Erlang 异常
在Erlang中,有3种例外类型-
-
Error−调用将终止当前进程的执行,并在捕获到最后一个函数及其参数时包含堆栈跟踪。这些是引发上述运行时错误的异常。erlang:error(Reason)
-
Exists −有两种Exists : 内部退出和外部退出。内部退出通过调用函数 exit/1来触发,并使当前进程停止执行。外部出口在 exit/2中被调用,并且与 Erlang 的并发方面中的多个进程有关。
-
Throw −throw是一类异常,用于程序员可以处理的情况。与退出和错误相比,它们并没有带来任何“崩溃过程!”他们背后的意图,而是他们控制的流量。当您在期望程序员处理抛出时使用抛出,通常最好在使用它们的模块中记录它们的使用。
在 Erlang 中,异常处理通常使用 try ... catch ... end
结构。这种结构允许你尝试执行一些可能会导致异常的代码,并在出现异常时执行相应的处理逻辑。
下面是一个简单的示例,演示了如何使用 try ... catch ... end
处理异常:实例
-module(exception_demo).
-export([safe_divide/2]).
safe_divide(_, 0) ->
throw(zero_division_error);
safe_divide(X, Y) ->
X / Y.
demo() ->
try
Result = safe_divide(10, 2),
io:format("Result: ~p~n", [Result])
catch
zero_division_error ->
io:format("Error: Division by zero!~n")
end.