erlang 異常的丟擲和處理

2021-08-30 12:01:06 字數 847 閱讀 2435

一、函式本身崩潰,自己產生異常。

二、對於if和case子句,找不到匹配發生異常。

三、人工丟擲異常

1、exit(why)

當想要終止當前程序時,就需要用到這個函式。如果這個異常未**獲,那麼系統會向所有與當前程序相連線的程序廣播訊息。

2、throw(why)

這個函式用於丟擲乙個呼叫者可能會捕獲的異常,

3、erlang:error(why)

這個函式用於丟擲那些崩潰異常。

四、處理語法

1、try funcorexpressionsequence of

pattern1 [when guard1]->expressions1;

pattern2 [when guard2]->expressions2;

catch

exceptiontype:expattern1 [whenexguard1]->expressions1;

exceptiontype:expattern2 [whenexguard2]->expressions2;

after

afterexpressions

end2、

使用catch原語,轉換異常為描述這個錯誤的乙個元組。

catch generate_exception(i)

五、1、捕獲所有可能的異常

try expr

catch

_:_->.......code.....

end2、忽略異常標籤,不能捕獲所有的錯誤

try expr

catch

_->.......code.....

end

異常的定義 丟擲和處理

任何錯誤都叫異常,不期而遇時,執行單元必須交割控制權,這是乙個肉包子打狗 有去無回的過程 pl sql引擎對系統異常 使用者異常或者應用異常皆是一視同仁 異常僅是異常嗎?有些異常如no data found,我們更願意待他是邏輯的乙個分支 下面詳細介紹異常的定義 丟擲和處理 定義異常那麼如何 屌絲逆...

處理異常 丟擲處理

丟擲處理 throw,throws 丟擲異常要注意的細節 1.如果乙個方法的內部丟擲了乙個編譯時的異常物件,那麼必須要在方法上宣告丟擲 2.如果呼叫了乙個宣告丟擲編譯時的異常方法,那麼呼叫者必須要處理異常。3.如果乙個方法內部丟擲了乙個異常物件,那麼throw語句後 不會再執行了 乙個方法遇到thr...

operator new丟擲異常的處理

operator new在無法完成記憶體分配請求時會丟擲異常 以前的做法一般是返回0,一些舊一點的編譯器還這麼做,我們也可以恢復到舊的編譯器方式 例如 char lp new char 10000000 如果分配失敗,在舊的編譯器下會返回0,但是在新的編譯器下會丟擲異常std bad alloc 我...