10,異常處理
1,定義:
異常處理就是處理程式中的錯誤;
2,基本思想:
讓乙個函式在發現了自己無法處理的錯誤時,丟擲(throw)乙個異常,然後它的(直接或間接)呼叫者可以吹這個問題;------即將問題檢測和問題處理分離;
3,異常基本語法
1,丟擲異常使用throw;
2,捕獲異常使用try{}catch(){};
throw:當問題出現時,程式會丟擲乙個異常;
catch:在你想要處理問題的地方,通過異常處理程式捕獲異常;
try:try塊中的**標識將被啟用的特定異常,它後面通常跟著乙個或多個catch塊;
noexcept:用於宣告函式不丟擲異常,如果函式丟擲了異常,則直接中斷,不能**獲;
3,語法:
try
catch(exceptionname e1)//exceptionname是設定丟擲異常時,資料的型別;
catch(exceptionname e2)
4,捕獲異常時的注意事項:
1,catch的匹配過程是找最先匹配的,從上到下;
2,catch的匹配過程中,對型別的要求比較嚴格,不允許標準算術轉換和類型別的轉換;
(類型別的轉換包括兩種:通過建構函式的隱式型別轉換,和通過轉換操作符的型別轉換);
案例:
void n()
int nnm = 5 / res;
}try
catch (const char* n)
maker(const maker& other)
~maker()
};void fff()
int main()
catch (int d)
//輸出建構函式 析構函式
return 0;
}
6,c++標準的異常
c++提供了一系列標準的異常,定義在中,我們可以在程式中使用這些標準的異常,它們是以父子類層次結構組織起來的;
每個類所在的標頭檔案在圖下方標識出來:
標準異常類的成員:
1,在上述繼承體系中,每個類都有提供了建構函式,複製建構函式,和賦值操作符過載;
2,logic_error類及其子類,runtime_error類及其子類,它們的建構函式是接受乙個string型別的形式引數,用於異常資訊的描述;
3,所有的異常類都有乙個what()方法,返回const char* 型別(c風格字串)的值,描述異常資訊;
說明:異常
描述std::exception
該異常是所有標準c++異常的父類;
std::bad_alloc
該異常可以通過new丟擲;
std::bad_cast
該異常可以通過dynamic_cast丟擲;
std::bad_exception
這在處理c++程式中無法預期的異常時非常有用;
std::bad_typeid
該異常可以通過typeid丟擲;
std::logic_error
理論上可以通過讀取**來檢測到的異常;
std::domain_error
當使用了乙個無效的數學域時,會丟擲該異常;
std::invaild_argument
當使用了無效的引數時,會丟擲該異常;
std::length_error
當建立了太長的std::string時,會丟擲該異常;
std::out_of_range
該異常可以通過方法丟擲,例如:std::vector和std::bitset<>::operator ();
std::runtime_error
理論上不可以通過讀取**來檢測到的異常;
std::overflow_error
當發生數學上溢時,會丟擲該異常;
std::range_error
當嘗試儲存超出範圍的值時,會丟擲該異常;
std::underflow_error
當發生數學下溢時,會丟擲該異常;
7,編寫自己的異常類
class out_range:public exception//繼承父類異常
//第一種方法:
explicit out_range(const char*_msg):exception(_msg){}//第二種方法:
}...
void fun()
catch(out_range& e)
第十五課 Map補充,異常,執行緒
常用的迭代方式 set entryset key value封裝成entry set keyset 遍歷key collection values 遍歷value hashmap key無序,並且不重複 hashset 就是value一樣的 hashmap treemap key排好序的 linke...
IO流第十五課,總結
一 步驟 建立檔案源,也就是路徑 選擇輸入 輸出流 操作 讀取 寫出 釋放資源 二 流 節點流 離資料源程式最近的流 1 節點流 可以處理一切檔案的複製 拷貝 1 輸入流 inputstream fileinputstream bytearrayinputstream 操作 read 位元組陣列 中...
第十五課 儲存與狀態
1.v0 v0 vi v 0 1 e t rc 電容真正儲存的是電荷,但對於乙個線性電容來說,它儲存的也是電壓,稱其為state。狀態 將來所需的所有輸入的彙總 電容的狀態就是電壓 vi 在零時刻以前的值無關緊要 電容電壓的未來值 是 電容初始狀態和未來時間輸入變化 的函式 vc t f vc 0 ...