一、函式本身崩潰,自己產生異常。
二、對於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 我...