三十四 異常(一)異常丟擲 異常捕獲 異常傳播

2021-06-28 20:06:25 字數 1372 閱讀 7743

一、程式錯誤

程式錯誤包含以下:

編譯錯誤,即語法錯誤。程式就無法被生成執行**。

執行時錯誤

例如:動態分配空間時可能不會成功

開啟檔案可能會失敗

除法運算時分母可能為0

整數相乘可能溢位

陣列越界……

二、c語言處理程式錯誤的方法

(1)、返回值

double func()

else if(ret == -2)

else if (ret == -3)

}

(2)、errno

在linux系統呼叫和c函式中,函式呼叫出錯會設定全域性變數error的值,我們需要在程式中檢查error是否等於-1,等於-1的話就要進行錯誤處理。

(3)、goto語句

區域性跳轉。示例:

int test()

else

char*p2 = (char*)malloc(3);

if (p2!=null)

else

pos1:

exit(1);

pos2:

free(p1);

exit(1);

}

(4)、setjmp、longjmp

長跳轉。示例:

#include #include jmp_buf buf;

double divide(double a, double b)

else

return a / b;

}int main(void)

else if (ret == 1) // catch

return 0;

}

c語言的出錯處理被認為是緊耦合的,函式的使用者必須在非常靠近函式呼叫的地方編寫錯誤處理**,這會使得其變得笨拙以及難以使用。

三、異常語法

try

catch(型別1 引數1)

catch (型別2 引數2)

…catch (型別n 引數n)

四、異常丟擲

五、異常捕獲

示例:

#include #include using namespace std;

//自定義型別異常

class myexception

};class test2

{public:

test2()

{ obj_ = new obj;

cout<

oracle plsql 捕獲異常和丟擲異常

在寫oracle儲存過程的時候很多東西放到儲存過程裡面比如一些判斷等,要比在程式邏輯裡面簡單很多,但是也會涉及到捕獲和丟擲一樣的問題。exception when excepttion name1 then when excepttion name2 then when excepttion nam...

捕獲和丟擲異常

異常處理5個關鍵字 try catch finally throw throws 不捕獲異常 public class test 捕獲異常,finally 可以不要,用於 假設io資源關閉,就會用到。public class test catch arithmeticexception e fina...

丟擲異常和捕獲異常 多捕獲和最終重新丟擲的異常處理

丟擲異常和捕獲異常 joseph d.darcy宣布,在langtools團隊成員maurizio cimadamore開發的多捕獲實現成功的經驗之後,具有多捕獲和最終重新丟擲的改進的異常處理將成為即將到來的jdk 7構建的一部分。當前,使用者可以將變更集應用於jdk 7 langtools儲存庫的...