1、首先很多时候程序在运行时出现的问题可能是未知的、不确定的,其次异常处理可以让代码简洁明了,再者,throw抛出的异常可以在多曾函数语句中传递,只要最外层的函数有catch就可以捕获异常,而return只能返回一级,必须层层处理。2、抛出的异常最好包含明确的意义,方便catch处理。PS:参考java和c#的异常处理可以更好理解,我个人觉得C++的异常处理不如这两种语言好。
所谓异常就是不正常的输入出现了,程序要有怎样的行为如果所有的代码都很健壮了,运行期代价也是很高的