1

我见过许多根本不需要的异常处理机制。很多时候,问题可以使用简单的if语句以更简洁的方式解决。

例如,类似的事情:

  • 输入无效
  • 被零除
  • 类型错误
  • 容器范围检查
  • 空指针
  • 未初始化的数据

... 等等。

有人可以提供一个例子来说明处理异常的更好方法吗?

4

3 回答 3

1

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

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

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

于 2013-08-26T11:24:38.990 回答
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';
    }   
}
于 2013-08-26T11:24:00.707 回答
0

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

于 2013-08-26T11:29:46.263 回答