我明白那个try
and catch()
用于异常处理,以防在某些情况下程序发生错误或崩溃。我也了解它们是如何工作的。但为什么要使用try
and catch()
?为什么不直接使用if()
查找特定案例的语句,如果该案例为真,则确实如此cout << //error code
?
异常处理:
- can be used with constructors and operators that have no opportunity to return a separate error code (they could set the object into some error state - which implies further memory usage - but the client code also has to remember to check for that error state later)
- 例如:用户定义类型-类
X
- 支持符号x1 = x2 + x3
- 哪里可以返回错误代码?
- 可以在初始化列表中构造特定的类/结构数据成员时启动 - 避免进一步的数据成员构造,这可能注定会失败或浪费;相比之下,显式错误处理只能在构造函数主体的后面进行
- 更加隐式——强调代码正常成功的流程,可以使其更加简洁、可读、可维护
- 分解方式不同——可以在一个地方捕获来自多个地方的异常,这有时会使错误处理代码本身更加简洁、可读、可维护
- 在错误处理本来会重复的情况下,简洁的好处实际上可以带来更可靠的错误处理
- 通常使用自己的内存区域,独立于堆栈,用于局部变量、函数参数、保存CPU寄存器和返回地址等;这意味着即使剩余堆栈内存小于异常对象,抛出语句也可以直接在该内存区域中可靠地构造异常对象(尽管实现细节并不受标准保证)
- 具有不同的性能配置文件,因此在某些情况下两者都可以更快
- 促进从低级代码到中间代码传播更丰富的错误信息,您可能不“拥有”或希望/能够更改这些代码以传播 C 风格的错误代码,直到进行处理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)