我明白 try
和 catch()
用于异常处理,以防程序在某些情况下发生错误或崩溃。我也明白他们是如何工作的。但是为什么要用try
和 catch()
?为什么不直接使用 if()
查找特定案例的语句,如果该案例为真,则执行 cout << //error code
?
最佳答案
异常处理:
- 可以与没有机会返回单独错误代码的构造函数和运算符一起使用(它们可以将对象设置为某种错误状态——这意味着进一步的内存使用——但客户端代码也必须记住检查该错误稍后说明)
- 例如:用户定义的类型 - 类
X
- 支持符号x1 = x2 + x3
- 错误代码可以在哪里返回?
- 例如:用户定义的类型 - 类
- 可以在初始化列表中构造特定的类/结构数据成员时启动——避免进一步的数据成员构造,否则可能注定失败或浪费;相比之下,显式错误处理只能稍后在构造函数体中进行
- 更含蓄——强调正常的成功代码流,可以使其更简洁、可读、可维护
- 分解方式不同——来自许多地方的异常可以在一个地方捕获,这有时会使错误处理代码本身更加简洁、可读、可维护
- 在错误处理会重复的情况下,简洁的好处实际上可以导致更可靠的错误处理
- 通常使用自己的内存区域,独立于栈,用于局部变量、函数参数、保存CPU寄存器和返回地址等;这意味着 throw 语句可能能够直接在该内存区域中可靠地构造异常对象,即使剩余堆栈内存小于异常对象(尽管实现细节并且不受标准保证)
- 具有不同的性能配置文件,因此在某些情况下两者都可以更快
- 促进更丰富的错误信息从低级代码向上传播到中间代码,您可能不“拥有”或希望/无法更改以传播 C 样式的错误代码,直至处理点
关于c++ - 为什么在 C++ 中使用 try 和 catch()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866791/