C 中的異常處理及檔案IO

2022-07-16 11:00:12 字數 982 閱讀 6276

一、異常處理

1、什麼是異常:能遇見但無法避免的錯誤

2、如何丟擲異常

throw 資料;

a、可以丟擲基本型別的異常

throw -1;

throw "我是異常";

b、可以丟擲類型別的異常

throw student stu;

c、不要拋區域性物件的指標的異常

student stu;

throw &stu;

3、如何捕獲異常

try

catch(異常型別1)

catch(異常型別2)

catch(異常型別3)

a、在捕獲異常時不光能獲得異常,還能獲得丟擲的異常資料

b、如果異常丟擲了,但沒有**獲程式會結束

c、異常的捕獲是自上而下的,不是選擇最優,因此子類的異常捕獲最好放在父類前面

d、捕獲異常時盡量使用引用的方式,由於在丟擲異常時如果使用物件的方式來捕獲就會呼叫物件的拷貝構造,這樣會在拷貝物件過程中再次引用引發異常

4、類型別的異常

a、可以為每一種異常定義乙個什麼都不用做的類,它只是為了區分各種異常

b、在丟擲異常時可能會呼叫異常的構造、拷貝構造、賦值構造等,如果在類中有看不到的資源時,一定要把這三個函式實現

c、為了防止有自定義的異常無法**獲,因此我們在定義異常時,最好都繼承標準庫中的異常類,這樣哪怕,不能精準的捕獲到異常,也能不遺漏異常

d、在丟擲異常時,盡量拋匿名臨時物件

5、編譯器會生成一段用來申請"安全區"的**並保護它,在異常發生後,此時程式的節奏已經被打斷,沒有任何位置是安全的除了安全區以外,安全區能保證儲存在此位置的異常物件不受破壞

6、構造和析構函式中的異常

在建構函式中發生了異常後,會直接跳轉到異常處理**,異常的構造就此中斷,物件的構造就不完整了,不完整的物件永遠不可能呼叫析構函式,哪怕用delete顯示呼叫

在建構函式的異常可以拋,但是不要丟擲建構函式(內部處理),一般使用回滾機制

IO異常的處理

之前的入門練習,我們一直把異常丟擲,而實際開發中並不能這樣處理,建議使用try.catch.finally 塊,處理異常部分 演示 public class handleexception1 catch ioexception e finally catch ioexception e 還可以使用j...

python 檔案I O與異常處理

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

Python中的異常及異常的處理

4.函式的錯誤 5.丟擲異常 程式執行時發生的錯誤的訊號。變數未定義 print a nameerror name a isnot defined索引溢位 str hello print str 10 indexerror string index out of range0不能作為除數 print...