C++ 异常基本语法
生活随笔
收集整理的這篇文章主要介紹了
C++ 异常基本语法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class MyException
{
public:void printError(){cout << "我自己的異常類的錯(cuò)誤" << endl;}
};class Person
{
public:Person(){cout << "Person的構(gòu)造函數(shù)" << endl;}~Person(){cout << "Person的析構(gòu)函數(shù)" << endl;}};int myDivide(int a , int b)
{if ( b == 0){//return -1; //C語言處理異常缺陷在于 返回的值 沒有統(tǒng)一,返回的值可以是異常的結(jié)果,也可以是正確的結(jié)果//拋出異常//throw 1;//throw 3.14;//throw 'a';//棧解旋: 從try代碼塊開始起,到 throw拋出異常前,所有棧上的對(duì)象都被釋放掉,// 釋放的順序和構(gòu)造的順序是相反的,這個(gè)過程稱為棧解旋Person p1;Person p2;throw MyException(); //拋出一個(gè) MyException 匿名對(duì)象}return a / b;}void test01()
{int a = 10;int b = 0;//嘗試執(zhí)行一段 可能會(huì)出現(xiàn)異常的代碼try{int ret = myDivide(a, b);cout << "ret 結(jié)果為: " << ret << endl;}catch (int ) //捕獲異常{cout << "int類型的異常的捕獲" << endl;}catch (double) {//捕獲到double后 不想處理這個(gè)異常,想繼續(xù)向上拋出這個(gè)異常throw;cout << "double類型的異常的捕獲" << endl;}catch (MyException e){e.printError();}catch (...){cout << "其他類型異常的捕獲" << endl;}}int main(){try{test01();}catch (int) //異常必須有人要處理,如果沒有任何的處理,程序會(huì)自動(dòng)調(diào)用一個(gè)terminate函數(shù),讓程序中斷掉{cout << "main函數(shù)中的 int類型的異常的捕獲" << endl;}catch (...){cout << "mian函數(shù)中的 其他類型異常的捕獲" << endl;}system("pause");return EXIT_SUCCESS;
}
2異常的基本語法
2.1三個(gè)關(guān)鍵字 try throw catch
2.2try 試圖執(zhí)行一段可能會(huì)出現(xiàn)異常的代碼
2.3throw出現(xiàn)異常后 拋出異常的關(guān)鍵字 throw + 類型
2.4catch 捕獲異常 catch(類型)
2.5如果想捕獲其他類型的異常 catch( … )
2.6如果捕獲到的異常不想處理,想繼續(xù)向上拋出 throw
2.7異常必須要有人處理,如果沒有處理,程序會(huì)自動(dòng)調(diào)用 terminate函數(shù),使程序中斷
2.8可以拋出一個(gè)自定義類型的異常 myException
總結(jié)
以上是生活随笔為你收集整理的C++ 异常基本语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中医如何治疗无精症
- 下一篇: C++ 异常变量的生命周期