第六十三課 C語言的異常處理

2021-09-07 13:25:18 字數 2043 閱讀 6200

1、異常的概念

(1)、程式在執行過程中可能產生異常

(2)、異常(exception)和bug的區別

a、異常是程式執行時可預料的執行分支

b、bug是程式中的錯誤,是不被預期的執行方式

2、異常(exception)和bug的對比

(1)異常

a、執行時產生除0的情況

b、需要開啟的外部檔案存在

c、陣列訪問越界

(2)、bug

a、使用野指標

b、堆陣列使用結束後未釋放

c、選擇排序無法處理長度為0的陣列

3、c語言經典處理方式:if....else.....

}4、缺陷(1)、divide函式有三個引數,難以理解其用法(2)、divide函式呼叫後必須判斷valid代表的結果a、當valid為true時,運算結果正常

b、valid為false時,執行結果出現異常

1、通過setjmp()和longjmp()進行優化

(1)、int  setjmp(jmp_buf env)

a、將當前上下文儲存在jmp_buf結構體中

(2)void setjmp(jmp_buf env, int val)

a、從jmp_buf結構體中恢復setjmp()儲存上下文

b、最終從setjmp()函式呼叫點返回,返回值為val

#include #include //for setjmp、longjmp();

using namespace std;

static jmp_buf env; //須定義全域性的上下文環境

double divide(double a, double b)

else

return ret;

}int main()

else

return 0;

}

2、缺陷:setjmp()和longjmp()的引入(1)、必須涉及到使用全域性變數(2)、暴力跳轉導致**可讀性降低(3)、本質還是if...else...的處理方式

(1)、程式中不可避免的會發生異常

(2)、異常是在開發階段就可以預見的執行時問題

(3)、c語言中通過經典的if-else

(4)、c++中存在更好的異常處理方式

第六十三課 C語言的異常處理

1 異常的概念 1 程式在執行過程中可能產生異常 2 異常 exception 和bug的區別 a 異常是程式執行時可預料的執行分支 b bug是程式中的錯誤,是不被預期的執行方式 2 異常 exception 和bug的對比 1 異常 a 執行時產生除0的情況 b 需要開啟的外部檔案存在 c 陣列...

第六十三周學習生活總結

今天是2020年7月19日,最近的暑伏天氣真的讓人很難受呢,三天就得下一場雨,天氣陰晴不定,就剛剛我午休之前天還是下著濛濛小雨,起床後就已經豔陽高照了 實際是被熱醒的 這星期我找了個保安的兼職,幹一天休息一天,雖然一天說是24小時,但是並沒有一開始想的那麼累,休息時間還是有的。這樣賺點零花錢也,感覺...

程式設計第六十三 六十四天

c algorithm set方法 include iostream include set include algorithm include iterator using namespace std template class t struct display int main int ia2...