一,異常的推演
1.函式與異常
平時我們在函式中出現異常情況時通常通過return終止函式並返回乙個值,然後在函式上層來獲取值並判斷是什麼異常情況。因為函式是棧結構的,所以return的時候是通過棧結構逐步往上的,不能夠跨函式直接丟擲,不方便。所以c++推出了異常機制,通過異常機制我們可以輕鬆的捕獲要出現的異常。
2.c++中異常的基本演示
# includeusing3.c++中異常的總結namespace
std;
/*定義求商函式,如果除數為0,丟擲double型別異常
*/double div(double d1, double
d2)
return d1 /d2;
}int
main()
catch (double
e)
catch
(...)
return0;
}
二,自定義異常類
1.異常類
按照物件導向的思維,我們的異常也應該是乙個物件,所以在丟擲異常的時候,我們通常自定義乙個異常類,然後把異常資訊放入異常類中,然後在捕捉到異常物件的時候,再呼叫物件的方法,列印出異常的資訊。
2.異常類**演示
# define _crt_secure_no_warnings3.自定義異常類總結# 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;
}
三,標準異常類
1.標準異常類
c++中提供了標準的異常類,需要# include,標準異常類為exception,該類有個what函式,可以列印異常物件的異常資訊。該what函式是虛函式,我們需要繼承exception類並重寫該what函式,在捕捉異常的時候,我們用父類的引用來接收自定義的標準異常類的子類物件(型別相容性原則),然後列印該異常資訊即可。
2.標準異常類演示
# include# includeusing
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...