声明
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) {}