声明

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