首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在什么情况下可以使用异常处理?

在什么情况下可以使用异常处理?
EN

Stack Overflow用户
提问于 2013-08-26 11:05:02
回答 3查看 126关注 0票数 1

我看到了许多异常处理机制,而这些机制根本就不是必要的。很多时候,使用简单的if语句可以更简洁地解决问题。

例如,类似于:

  • 无效输入
  • 除以零
  • 错误类型
  • 集装箱范围检查
  • 空指针
  • 未初始化数据

..。诸若此类。

有人能提供一个更好的方法来处理异常吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-26 11:24:38

随着程序大小的增加,异常变得更加重要。

对于一个简单的应用程序,返回代码可能很好。但是,当一个错误条件需要在处理之前抛出堆栈的几个级别时,使用异常而不是从每个函数传递错误代码是有意义的。

另外,当一个方法已经返回一个值时,从函数返回一个错误代码也可能是不实际的,也是不可能的。

票数 1
EN

Stack Overflow用户

发布于 2013-08-26 11:24:00

有时使用异常更干净。在函数foo中,由于在check函数中抛出异常,您可以避免检查check返回什么使该函数更简单:

代码语言:javascript
运行
复制
#include<iostream>
using namespace std;

class A{
public:
    int a_foo(int index){return _tab[index];}    
private:
    static int _tab[3];
};
int A::_tab[3]={1,2,3};

void check(int index)
{
    if (index < 0 || index > 2)  
            throw string("invalid index");  
}

void foo(A a, int index){
    check(index);
    cout << a.a_foo(index) << endl;
}

int main()
{
    try 
    {   
        A a;
        foo(a,4);    
    }   
    catch(string ex) 
    {   
        cerr << ex <<'\n';
    }   
}
票数 0
EN

Stack Overflow用户

发布于 2013-08-26 11:29:46

当某个意外的“事件”导致应用程序无法继续运行时,我会使用它。当它发生并且您捕捉到它时,很好地报告它并关闭应用程序(或者在这种情况下您认为应该做的任何事情)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18442608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档