目錄異常的介面宣告
棧解旋異常變數的生命週期
異常的多型使用
異常處理就是處理程式中的錯誤
#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語句進行處理,如果上層函式也沒有能力處理該異常,則異常繼續向更上層函式的函式傳遞。如果在函式呼叫棧中的所有函...