當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。