64,648
社区成员
发帖
与我相关
我的任务
分享
class Abnormal
{
};
int v()
{
throw "这不对";
cout<<"next";
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
try{
v();
}
catch(char * txt)
{
cout<<txt<<endl;
}
return 0;
}
void fun3()
{
return -1;
}
void fun2()
{
fun3()
}
void fun1()
{
fun2()
}
假设以上三段代码分别是三个不同的人写的。
fun3返回-1表示出错了。
但是如果fun1想知道出错了,需要fun2里面return fun3(),而不能直接调用fun3()就没有了。
直接调用fun3()就导致了错误码的丢失,上层逻辑由于写fun2的人的疏忽,不知道到底是什么错。
但是如果是异常机制,fun3抛出异常,fun2疏忽了,没有try,catch,这个异常不会丢,会继续抛到fun1。
也就是fun2不想关心出了什么错,就可以不关心。
fun1想关心,也不会因为fun2的不关心而导致关心不到,鞭长莫及。
这是我所理解的异常唯一的一个好处。
[/quote]
能够跨层是吧,我看着估计也就是这个好处了。
void fun3()
{
return -1;
}
void fun2()
{
fun3()
}
void fun1()
{
fun2()
}
假设以上三段代码分别是三个不同的人写的。
fun3返回-1表示出错了。
但是如果fun1想知道出错了,需要fun2里面return fun3(),而不能直接调用fun3()就没有了。
直接调用fun3()就导致了错误码的丢失,上层逻辑由于写fun2的人的疏忽,不知道到底是什么错。
但是如果是异常机制,fun3抛出异常,fun2疏忽了,没有try,catch,这个异常不会丢,会继续抛到fun1。
也就是fun2不想关心出了什么错,就可以不关心。
fun1想关心,也不会因为fun2的不关心而导致关心不到,鞭长莫及。
这是我所理解的异常唯一的一个好处。