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 #include2、缺陷:setjmp()和longjmp()的引入(1)、必須涉及到使用全域性變數(2)、暴力跳轉導致**可讀性降低//for setjmp、longjmp();
using
namespace
std;
static jmp_buf env; //
須定義全域性的上下文環境
double divide(double a, double
b)
else
return
ret;
}int
main()
else
return0;
}
(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...