C I O操作與I O異常

2021-08-31 13:52:15 字數 1178 閱讀 1226

//引入標頭檔案

#include //檔案寫操作

ofstream out("myfile.txt");

out << "hello_world" << " " << 12 << " "<<'c' << endl;

out.close();

//檔案讀操作

ifstream in("myfile.txt");

string data1;

int data2;

char data3;

in >> data1 >> data2 >> data3;

cout << data1 << " " << data2 << " " << data3 << endl;

in.close();

對於強制異常處理操作,產生異常後,執行會中斷於異常處。

q1:異常涉及關鍵字?

q2:異常的棧展開是怎麼回事?

函式丟擲的異常會沿著函式呼叫鏈逆向丟擲,直至:

1)拋到有異常處理模組,進行異常處理;

2) 拋到主函式顯示異常,系統會呼叫terminate => abort 終止程序執行。

q3:舉一些產生異常的例子,還有怎麼解決?

class test

~test()

private:

int *ptr1;

int *ptr2;

//解決方法:利用智慧型指標在棧上自動釋放的特點

//unique_ptrptr1;

//unique_ptrptr2;

};此時,對test類進行例項化執行時,會丟擲異常產生異常中斷,

並且測試的列印語句只輸出了 "test()" ,說明物件並未析構

trycatch(const bad_alloc& e)//記憶體分配失敗異常捕獲

{}此時,若p2記憶體分配失敗,catch捕獲到該異常產生中斷,系統不會再呼叫delete對之前已分配成功的p1進行記憶體資源釋放。

q4:建構函式和析構函式能不能丟擲異常?

建構函式:不能

例如上述在建構函式中丟擲異常產生異常中斷,物件沒有構造成功,所以物件的析構函式就不會再呼叫了,導致記憶體無法釋放。

python 檔案I O與異常處理

open函式 file object open file name access mode buffering 各個引數的細節如下 1 file name file name變數是乙個包含了你要訪問的檔名稱的字串值。2 access mode access mode決定了開啟檔案的模式 唯讀,寫入,...

C IO操作總結

c 語言本身並不提供輸入輸出的功能,輸入輸出功能由io庫提供,io庫屬於c 標準庫的乙個子集,需要掌握的知識點並不是很多,所以也並不是很難掌握,這裡只是個人學習的一點總結,方便以後隨時複習一下,免得忘記。c 中io操作主要的流操作物件有三個,控制台輸入輸出流 檔案輸入輸出流 還有記憶體輸入輸出流,下...

c day14 異常處理。i o操作

異常程式 錯誤的時候產生的一種錯誤,在其他語言中,如python,在程式執行時如果有錯誤的話就會丟擲異常,控制台上會爆出紅色的錯誤資訊,而c 沒有,只是將退出狀態碼設定為不是0,代表程式不是正常退出,這就使我們追蹤bug有一定的影響 當我們覺得程式可能在哪個 塊上會出現異常的時候可以用try來對異常...