在这种情况下,如果rungame()或任何它调用的函数抛出一个未捕获的异常,异常将解除了栈和最终被捕捉到的所有处理程序。这将防止main()终止,并给我们一个机会去打印我们的选择错误,然后保存用户的状态在退出之前。这可以捕捉和处理未预料到的问题,可能是有用的。
异常说明符
本款应视为可选阅读因为异常说明符是在实践中很少使用,不能很好的支持的编译器,和Bjarne Stroustrup(C + +的创造者)认为他们是一个失败的试验。
异常说明符是一种机制,允许我们使用一个函数声明中指定一个函数是否可能会或不会抛出异常。这可以决定一个函数调用的需要放在try块或不可。
有三种类型的异常说明符,所有这一切
1
int DoSomething() throw(); // does not throw exceptions
请注意,()仍然可以使用例外,只要是在内部处理。任何函数声明与throw()应该使程序立即终止,如果它试图抛出一个异常外,本身,但实施参差不齐。
第二,我们可以使用一个特定的语句来表示,一个函数可以抛出一个特定类型的异常:
1
int DoSomething() throw(double); // may throw a double
由于不完整的编译器的实现,事实上,异常说明符更像是意图的保证报表模板的功能,一些不兼容的,而且大多数的C++程序员都不知道他们的存在的事实,我建议你不要使用异常说明符。