我见过许多根本不需要的异常处理机制。很多时候,问题可以使用简单的if
语句以更简洁的方式解决。
例如,类似的事情:
- 输入无效
- 被零除
- 类型错误
- 容器范围检查
- 空指针
- 未初始化的数据
... 等等。
有人可以提供一个例子来说明处理异常的更好方法吗?
我见过许多根本不需要的异常处理机制。很多时候,问题可以使用简单的if
语句以更简洁的方式解决。
例如,类似的事情:
... 等等。
有人可以提供一个例子来说明处理异常的更好方法吗?
随着程序大小的增加,异常变得越来越重要。
使用简单的应用程序返回代码可能就可以了。但是,当错误条件需要在处理之前冒出几层堆栈时,使用异常而不是从每个函数传递错误代码开始变得有意义。
此外,当一个方法已经返回一个值时,从函数返回错误代码也可能不切实际或不可能。
有时使用异常更干净。在函数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';
}
}
当某些意外“事件”的结果导致应用程序无法继续运行时,我会使用它。当它发生并且你抓住它时,很好地报告它并关闭应用程序(或在这种情况下你认为你应该做的任何事情)。