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