pro*_*eek 7 c++ oop exception-handling
在询问捕获'除以0'异常的过程中,我发现使用C++,我们不能这样做.我的意思是,除以0不会抛出std :: exception.
我发现的一些提示是我必须检查值,然后自己抛出异常.
我说它令人困惑,因为我认为C++采用了异常的想法,以便通过返回值方法来替换"旧的C/UNIX报告错误".
这是我的问题
C++假设您知道自己在做什么,不为您不需要的东西付费,并且不会对其所针对的平台做出任何假设.
如果你想分割数字,那么要求编译器检查分母并在分割之前抛出是非常低效的.(我们没有要求它这样做.)所以这个选项已经出来了; 我们不能对每个部门进行这种检查,因为大多数部门都不是零,所以特别浪费.
那么,我们怎样才能将零除以找出它是否有效?因为C++不能假设它的平台,它不能假设有一种方法来检查结果,硬件方面.也就是说,虽然许多CPU会在分零时跳转到某种类型的中断,但C++语言无法保证这样的事情.
唯一的选择是让行为不确定.而这正是你得到的:未定义的行为.
OOP语言可能会做某些事情或者其他事情,因为OOP没有明确定义而且C++不是OOP语言也没关系.通常,使用最合适的工具.(例外情况适用于特殊情况.)