1
我在Erlang中有以下代码,其中我正在使用一个不存在的模块。 在一些Erlang/meck版本中,这会产生一个看起来不可捕捉的异常。Erlang无法捕捉的异常
任何人都知道Erlang中是否存在“无法捕捉的异常”功能?
try
meck:new(i_dont_exist),
io:format("No exception in this version of Erlang ... :("),
no_problems
catch
exit:_ -> exit;
error:_ -> error;
throw:_ -> throw;
_:_ -> what_class_is_it
after
io.format("in the after~n")
end.
当我执行这个代码,这是我所得到的(注意,不是连“后”正在执行条款,所以它看起来更像是给我一个bug):
** exception exit: {undefined_module,i_dont_exist}
in function meck_proc:resolve_can_expect/3 (src/meck_proc.erl, line 402)
in call from meck_proc:init/1 (src/meck_proc.erl, line 194)
in call from gen_server:init_it/6 (gen_server.erl, line 304)
in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 227)
我有还试图用同样的结果“抓”的表达:
> catch meck:new(i_dont_exist).
** exception exit: {undefined_module,i_dont_exist}
in function meck_proc:resolve_can_expect/3 (src/meck_proc.erl, line 402)
in call from meck_proc:init/1 (src/meck_proc.erl, line 194)
in call from gen_server:init_it/6 (gen_server.erl, line 304)
in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 227)