C++學(xué)習(xí)筆記之淺談異常處理
異常處理主要是針對能通過編譯但是運行是在某個特定條件下會出現(xiàn)異常,程序崩潰,結(jié)果出錯。來進行的東西
C++處理異常的機制是由3個部分組成的,即檢查(try)、拋出(throw)和捕捉(catch)。把需要檢查的語句放在try塊中,throw用來當出現(xiàn)異常時發(fā)出一個異常信息,而catch則用來捕捉異常信息,如果捕捉到了異常信息,就處理它。
try {被檢查的語句}
catch(異常信息類型 [變量名])
{進行異常處理的語句}
粘一個簡單的異常處理的題:
如果三角形滿足三角形內(nèi)角和大于第三邊才會有輸出,否則進行異常處理。
#include<iostream> using namespace std; int main() { double triangler(double a, double b, double c); { double a, b, c; cin >> a >> b >> c; try //在try塊中包含要檢查的函數(shù) { while (a > 0 && b > 0 && &c > 0) { cout << triangler(a, b, c) << endl; cin >> a >> b >> c; } } //catch (double) //只能拋出對應(yīng)類型的異常 //{ // {cout << "a=" << a << ",b=" << b << ",c=" << c << ",that is not a triangler!" << endl; } // cout << "end" << endl; //} catch (...) //”...“代表可以拋出任何類型的異常 { {cout << "a=" << a << ",b=" << b << ",c=" << c << ",that is not a triangler! it is all typical!" << endl; } cout << "end" << endl; } } } double triangler(double a, double b, double c) { double s = (a + b + c) / 2; if (a + b <= c || a + c <= b || b + c <= a) throw a; //拋出異常對象 return sqrt(s * (s - a) * (s - b) * (s - c)); }
1.在主函數(shù)中添加需要檢查的語句或者程序段到try語句下;如果運行到try區(qū)域出現(xiàn)異常 則會拋出一個throw,然后返回上一級程序。在進行異常處理后,程序并不會自動終止,繼續(xù)執(zhí)行catch子句后面的語句。若是沒有發(fā)現(xiàn)異常,直接跳到catch以后的程序
2.throw拋出的數(shù)據(jù)類型又人們自己來定義,catch(后的括號有什么數(shù)據(jù)類型則會檢查什么數(shù)據(jù)類型的錯誤),如果比較懶的花括號里寫三個點(...)代表所有類型
3.try catch結(jié)構(gòu)可以與throw不在一起,甚至不在一個函數(shù)里。如果throw出一個異常,throw 會首先在本函數(shù)里找try catch函數(shù)如果找不到則會采取就近原則。
4.可以單獨出現(xiàn)try,但不能單獨出現(xiàn)catch
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言之實現(xiàn)棧的基礎(chǔ)創(chuàng)建
這篇文章主要介紹了C語言之實現(xiàn)棧的基礎(chǔ)創(chuàng)建,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07C++文件相關(guān)函數(shù)CreateFile|ReadFile|WriteFile用法詳解
這篇文章主要為大家詳細介紹了c++有關(guān)文件創(chuàng)建、讀取和寫入的api:CreateFile、ReadFile、WriteFile的具體使用,需要的可以參考下2023-04-04