catch (...)陈述
例外处理可以有多个catch,如果catch后的小括弧里面放...,就表示不限型态种类的任何例外。
举例如下
#include <iostream>int main() {int i = -1;try {if (i > 0) {throw 0;}throw 2.0;}catch (const int e) {std::cout << e << std::endl;}catch (...) {std::cout << "something wrong" << std::endl;}return 0;
}
这里抛出两种例外,第一种为int型态(type) ,第二种则是double型态
if (i > 0) {throw 0;
}
throw 2.0;
catch的部份写了两组,第一组为处理int型态的例外,第二组则是...,也就是任何例外
catch (const int e) {std::cout << e << std::endl;
}
catch (...) {std::cout << "something wrong" << std::endl;
}
这里须注意,如果...的次序放在int之前,发生例外就会直接执行...的部份,因此...放在最后有以上皆非的意义。
编译执行结果如下
$ g++ u0602.cpp
$./a.out 复制代码
有事吗
$