C 中的異常

2021-07-28 03:55:38 字數 1956 閱讀 9452

一,異常的推演

1.函式與異常

平時我們在函式中出現異常情況時通常通過return終止函式並返回乙個值,然後在函式上層來獲取值並判斷是什麼異常情況。因為函式是棧結構的,所以return的時候是通過棧結構逐步往上的,不能夠跨函式直接丟擲,不方便。所以c++推出了異常機制,通過異常機制我們可以輕鬆的捕獲要出現的異常。

2.c++中異常的基本演示

# includeusing

namespace

std;

/*定義求商函式,如果除數為0,丟擲double型別異常

*/double div(double d1, double

d2)

return d1 /d2;

}int

main()

catch (double

e)

catch

(...)

return0;

}

3.c++中異常的總結

二,自定義異常類

1.異常類

按照物件導向的思維,我們的異常也應該是乙個物件,所以在丟擲異常的時候,我們通常自定義乙個異常類,然後把異常資訊放入異常類中,然後在捕捉到異常物件的時候,再呼叫物件的方法,列印出異常的資訊。

2.異常類**演示

# define _crt_secure_no_warnings

# include

using

namespace

std;

/*自定義異常類

*/class

myexception

/*異常類拷貝建構函式

*/myexception(

const myexception&me)

/*異常類析構函式

*/ ~myexception()

cout

<< "

異常類的析構函式執行

"<

}/*異常類丟擲異常資訊

*/void

tostring()

};/*

定義測試異常的函式

*/double divide(double d1, double

d2)

return d1 /d2;

}int

main()

catch

(myexception e)

catch (myexception *e)

catch (myexception&e)

catch

(...)

return0;

}

3.自定義異常類總結

三,標準異常類

1.標準異常類

c++中提供了標準的異常類,需要# include,標準異常類為exception,該類有個what函式,可以列印異常物件的異常資訊。該what函式是虛函式,我們需要繼承exception類並重寫該what函式,在捕捉異常的時候,我們用父類的引用來接收自定義的標準異常類的子類物件(型別相容性原則),然後列印該異常資訊即可。

2.標準異常類演示

# include# include

using

namespace

std;

/*繼承自標準異常類

*/class divexception :public

exception

/*重寫what函式

*/virtual

char

const * what() const

};/*

測試異常函式

*/int divi(int a, int

b)

return a /b;

}int

main()

catch (exception&e)

catch

(...)

return0;

}

異常 C 中的異常

本文參照於狄泰軟體學院 c 深度剖析課程 之前我們分析了c語言中異常處理的方式,基本沒有好的解決方案。那麼c 中會如何優化c語言對異常的處理的缺陷呢?c 內建了異常處理的語法元素try catch try語句處理正常 邏輯 catch語句處理異常情況 try語句中的異常由對應的catch語句處理 t...

c 中的異常

乙個簡單的例子 include using namespace std double division int a,int b return a b int main catch const char msg return 0 上面的const char 異常型別也可以是任何型別,比如double,...

C 中的異常

傳統的異常處理方式 1 終止程式,比如assert 2 返回錯誤碼,需要程式設計師去查對應的錯誤碼 3 c標準庫中setjmp和longjmp組合 異常是一種處理錯誤的方式,當函式發現自己無法處理的錯誤就可以丟擲異常,讓函式的呼叫者來處理這個錯誤 throw 用throw丟擲異常 catch 用ca...