一、程式錯誤
程式錯誤包含以下:
編譯錯誤,即語法錯誤。程式就無法被生成執行**。
執行時錯誤
例如:動態分配空間時可能不會成功
開啟檔案可能會失敗
除法運算時分母可能為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儲存庫的...