C 學習筆記之 異常

2022-05-06 11:57:10 字數 1840 閱讀 1487

目錄異常的介面宣告

棧解旋異常變數的生命週期

異常的多型使用

異常處理就是處理程式中的錯誤

#include using namespace std;

int mydivision(int a,int b) else if (b < 0)

return a / b;

}int main() catch (int a) catch (...)

return 0;

}

捕獲其他異常
#include using namespace std;

class myexception

};int mydivision(int a,int b)

return a / b;

}int main() catch (myexception e)

return 0;

}

我自己的異常
只允許函式在執行中丟擲某種型別的異常

#include using namespace std;

class myexception

};// 只允許丟擲int,myexception異常

int mydivision(int a,int b)throw(int,myexception) // c++14不允許,c++11不贊成

return a / b;

}int main() catch (myexception e)

return 0;

}

當發生異常時,從進入try塊後,到異常被拋擲前,這期間在棧上的構造的所有物件都會被自動析構。析構的順序與構造的順序相反,這一過程被稱為棧的解旋

// throw myexception();   myexception e  呼叫拷貝建構函式,建立新的異常物件

// throw myexception(); myexception& e 不呼叫拷貝構造,推薦使用

// throw &myexception(); myexception* e 物件被提前釋放,如果操作e,非法操作

// throw new myexception(); myexception* e 要管理釋放 delete e

父類:baseexception 虛函式:printerror

#include using namespace std;

class baseexception // 異常父類

};class nullpointerexception : public baseexception // 空指標異常

};void dotry()

int main() catch (nullpointerexception &e)

return 0;

}

nullpointerexception

#include #include using namespace std;

void dotry()

int main() catch (exception &e)

return 0;

}

資料越界

C 學習筆記之異常

程式執行中需要處理異常 異常處理方法一 異常處理方法二 c 異常處理機制 異常處理基礎 例子1 除數為零的異常處理 ex17 1.cpp 除數為零的異常例子 include include using namespace std 定義異常類myexception class myexception ...

C 學習筆記之 異常處理

try catch finally try語句用來知名為避免出現異常而被保護的 段,並在發生異常時提供 處理異常。try語句由三部分組成 try 包含為避免出現異常而被保護的 catch 若try發生異常,則catch子句處理異常。特定catch子句允許多於乙個。finally 若在try子句中沒有...

C 之異常處理學習筆記

throw語句用於將異常物件丟擲,throw語句將異常丟擲,如果在當前函式中沒有try catch語句能夠處理該異常,則當前函式將立即返回。異常被傳遞到上層呼叫函式,仍然需要try catch語句進行處理,如果上層函式也沒有能力處理該異常,則異常繼續向更上層函式的函式傳遞。如果在函式呼叫棧中的所有函...