Exceptions & IO
- 例外是指預期中可能發生錯誤的情況。同時介紹如何使用C++進行Input&Output。
Exceptions
- 預期可能產生例外時,預先作的處置,稱為例外處理(Exceptions handling)。
- 使用try...catch...語法。
- 在try{}內寫程式內容,當可能錯誤(index >= 5)發生時,使用throw丟出例外,再由catch()承接。
- 丟出的例外形態(20),需與catch()所定義相符(int e)。
- Exception可能超過一個,使用catch(...)來承接所有其他未能被預期處理的例外。
-
exception物件(需#include
)包含C++標準資料庫會拋出的例外,e.g. exception description bad_alloc 當使用new失敗時 bad_cast 當使用dynamic_cast失敗時 bad_exception 當特定dynamic exception被拋出時 bad_typeid 當使用type_id被拋出時 bad_function_call 當拋出空的函數物件時 bad_weak_ptr 當通過bad weak_ptr然後拋出shared_ptr時 logic_error 當程式內部邏輯錯誤時 runtime_error 執行程式偵測到錯誤時 - 可以自訂exception,需要繼承exception。
- 繼承exception然後重載what()函數。
Input & Output
- 輸出與輸入是資料的流動,之前常用的cout是將資訊輸出到螢幕上,cin是收集使用者輸入的資料,這兩個指令都是定義在
,所以每次都要將其include。而若要將資料寫入檔案或自檔案讀出,則可納入fstream來寫入與讀取檔案(或是使用ofstream來寫入檔案,ifstream來讀取檔案)。 - 。
- 使用ofstream來開啟檔案資料流,使用open()函數開啟連結檔案,使用後須使用close()函數關閉資料流。
- 到專案資料夾可以找到檔案(abc.txt)。
- 可以使用file.is_open()來判斷檔案資料流是否已開啟。
- 若是要自檔案讀取資料,可使用getline(filestream, line)來讀取一行資料。
- 使用getline()每一次會讀出一行,所以使用while loop,一直讀到檔案的最後一行,因為讀取的資料是字串,所以需include
資料庫 。 - 可以使用is_open()方法先判斷是否已正常開啟再行讀取。