当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang raise(Class, Reason, Stacktrace)用法及代码示例


erlang:raise(Class, Reason, Stacktrace) -> badarg
类型:
Class = error | exit | throw
Reason = term()
Stacktrace = raise_stacktrace() | stacktrace()
raise_stacktrace() =
[{module(),atom(),arity()| [term()]} |
{function(),arity()| [term()]}]

引发指定类、原因和调用堆栈回溯(stacktrace)的异常。

Classerrorexitthrow 。因此,如果没有堆栈跟踪,erlang:raise(Class, Reason, Stacktrace) 相当于 erlang:Class(Reason)(假设 Class 是一个有效的类)。

Reason 可以是任何术语。

Stacktrace 是try-catch 子句中提供的列表。

try
    ...
catch Class:Reason:Stacktrace ->
    ...
end

即four-tuples {Module, Function, Arity | Args, ExtraInfo} 列表,其中ModuleFunction 是原子,第三个元素是整数元数或参数列表。堆栈跟踪还可以包含 {Fun, Args, ExtraInfo} 元组,其中 Fun 是本地函数,Args 是参数列表。

末尾的元素 ExtraInfo 是可选的。省略它相当于指定一个空列表。

堆栈跟踪用作调用进程的异常堆栈跟踪;它被截断为当前最大堆栈跟踪深度。

由于计算此函数会导致进程终止,因此除非参数无效,否则它没有返回值,在这种情况下,函数将返回错误原因 badarg 。如果你想确定不返回,可以调用error(erlang:raise(Class, Reason, Stacktrace)),希望稍后能区分异常。

请参阅参考手册了解错误和错误处理有关异常类以及如何捕获异常的更多信息。

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 raise(Class, Reason, Stacktrace) -> badarg。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。