1. 程式人生 > >c++異常處理函數

c++異常處理函數

參數類型 拋出異常 nbsp return () 捕獲異常 pre str throw

註意: throw 拋出異常,catch 捕獲異常,try 嘗試捕獲異常

catch 中的參數類型要和throw 拋出的數據類型一致

try
{
//可能拋出異常的語句
}
catch (異常類型1)
{
//異常類型1的處理程序
}
catch (異常類型2)
{
//異常類型2的處理程序
}
// ……
catch (異常類型n)
{
//異常類型n的處理程序
}

例1:

 #include <iostream>

 #include <stdlib.h>

using namespace std;

enum index{underflow, overflow};

int array_index(int *A, int n, int index);

int main()
{
    int *A = new int[10];
    for(int i=0; i<10; i++)
        A[i] = i;
    try
    {
        cout<<array_index(A,10,5)<<endl;
        cout<<array_index(A,10,-1)<<endl;
        cout<<array_index(A,10,15)<<endl;
    }
    catch(index e)
    {
        if(e == underflow)
        {
            cout<<"index underflow!"<<endl;
            exit(-1);
        }
        if(e == overflow)
        {
            cout<<"index overflow!"<<endl;
            exit(-1);
        }
    }

    return 0;
}

int array_index(int *A, int n, int index)
{
    if(index < 0) throw underflow;
    if(index > n-1) throw overflow;
    return A[index];
}
這是用來處理數組越界的代碼,throw 拋出的是枚舉型的數據,因此catch 中的數據類型也是相應的枚舉型
C++語句中有默認的異常處理函數,會對異常做出處理。


c++異常處理函數