在什么情况下使用异常处理是可行的?

时间:2013-08-26 11:05:02

标签: c++ exception exception-handling

我见过很多异常处理机制,根本没有必要。很多时候,使用简单的if语句可以更清晰地解决问题。

例如:

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

......等等。

有人可以举例说明处理异常的更好方法吗?

3 个答案:

答案 0 :(得分:1)

随着程序规模的增长,异常变得更加重要。

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

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

答案 1 :(得分:0)

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

#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';
    }   
}

答案 2 :(得分:0)

当某些意外“事件”的后果无法让应用程序继续运行时,我会使用它。当它发生并且你抓住它时,报告它并关闭应用程序(或者你认为在这种情况下你应该做的任何事情)。