声明
class Foo { //可能抛出任何异常,也可能不抛出异常 void bar(); //不抛出异常 void bar() throw(); //可能抛出char类型异常 char bar(char) throw(char); //可能抛出char类型或string类型异常 char bar(char, string) throw(char, string); };
实现
//不抛出异常 void Foo::bar() throw() { } //抛出char类型异常 char Foo::bar(char c) throw(char) { throw char(1); } //抛出char类型或string类型异常 char Foo::bar(char c, string s) throw(char, string) { //抛出char类型 throw char(1); //抛出string类型 throw string("abc"); }
throw用法
- 抛出int类型异常
throw int(10);
- 抛出string类型异常
throw string str(“abc”);
- 抛出string类型异常
string str(“defg”); throw str;
- 抛出Person*类型异常
throw new Person;
catch
- 捕获无值的int类型异常
catch (int) {}
- 捕获int类型异常
catch (int n) {}
- 捕获string异常对象
catch (string s) {}
- 捕获string异常对象,但使用引用从而减少对象复制
catch (string& s) {}