异常接口声明

异常接口声明

为了加强程序的可读性,可以在函数声明中列出可能抛出的所有异常类
型,例如:

void func() throw (A, B, C , D);这个函数func()能够且只能抛出类
型A B C D及其子类型的异常。

如果在函数声明中没有包含异常接口声明,则次函数可以抛掷任何类型的
异常,例如:
void func();

一个不抛掷任何类型异常的函数可以声明为:
void func() throw();

如果一个函数抛出了它的异常接口声明所不允许抛出的异常,unexpected
函数会被调用,该函数默认行为调用terminate函数中止程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>


using namespace std;
//只能抛出int,double,char这三个类型的异常
//在VS中可能抛出其他类型的异常不会出错,但在Linux会报错
const char * gStr = "abc";
void test01()throw(int,double,char) {
throw gStr;
}

//不能抛出异常
void test02()throw() {

}

//可以抛出所有类型的异常
void test03() {

}

int main(char *argv[], int argc)
{
try {
test01();
}
catch (int) {

}
catch (const char * y) {
cout << y << endl;
}
catch (double) {

}


return 0;
}