erlang:raise(Class, Reason, Stacktrace) -> badarg
Class = error | exit | throw
Reason = term()
Stacktrace = raise_stacktrace() | stacktrace()
引发指定类、原因和调用堆栈回溯(stacktrace)的异常。
Class
是 error
、 exit
或 throw
。因此,如果没有堆栈跟踪,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}
列表,其中Module
和Function
是原子,第三个元素是整数元数或参数列表。堆栈跟踪还可以包含 {Fun,
Args, ExtraInfo}
元组,其中 Fun
是本地函数,Args
是参数列表。
末尾的元素 ExtraInfo
是可选的。省略它相当于指定一个空列表。
堆栈跟踪用作调用进程的异常堆栈跟踪;它被截断为当前最大堆栈跟踪深度。
由于计算此函数会导致进程终止,因此除非参数无效,否则它没有返回值,在这种情况下,函数将返回错误原因 badarg
。如果你想确定不返回,可以调用error(erlang:raise(Class, Reason,
Stacktrace))
,希望稍后能区分异常。
请参阅参考手册了解错误和错误处理有关异常类以及如何捕获异常的更多信息。
相关用法
- erlang rand_seed()用法及代码示例
- erlang range(BinRel)用法及代码示例
- erlang reverse用法及代码示例
- erlang rename用法及代码示例
- erlang remove用法及代码示例
- erlang registered用法及代码示例
- erlang register用法及代码示例
- erlang repair_continuation(Continuation, MatchSpec)用法及代码示例
- erlang rootname(Filename)用法及代码示例
- erlang register(RegName, PidOrPort)用法及代码示例
- erlang registered()用法及代码示例
- erlang round(Number)用法及代码示例
- erlang read_file_info(Filename)用法及代码示例
- erlang read_file_info(File)用法及代码示例
- erlang remove(Key, Map1)用法及代码示例
- erlang referenced_byte_size(Binary)用法及代码示例
- erlang replace(Subject, Pattern, Replacement, Options)用法及代码示例
- erlang receive_response(RequestId, Timeout)用法及代码示例
- erlang replace(String, SearchPattern, Replacement)用法及代码示例
- erlang reverse(String :: unicode:chardata())用法及代码示例
- erlang right(String, Number)用法及代码示例
- erlang rstr(String, SubString)用法及代码示例
- erlang rfc3339_to_system_time(DateTimeString)用法及代码示例
- erlang reverse(List1, Tail)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 raise(Class, Reason, Stacktrace) -> badarg。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。