使用C++异常来取代exit()函数[2]

使用C++异常来取代exit()函数[2],第1张

使用C++异常来取代exit()函数[2],第2张

原始代码缺少恢复或记录功能。如果出现错误,程序就会“消失”,让用户无所适从。下面是重组后的代码。请注意,函数修饰符不会被修改:

Void main() {
//初始化
...
尝试{
processmail(...);
} catch(int ret){
switch(ret){
case E _ initial ization _ FAILURE:...
情况E _不可挽回:...
...
}
}
}

Void ProcessMail(...){
//初始化
...
if(initialization error){
throw(e _ initial ization _ failure);
}

而(!关机){
尝试{
阅读邮件(...)
} catch(int ret){
switch(ret){
case e _ read _ error:
//记录错误...
//正在尝试恢复
...
if(已恢复){
继续;
} else {
throw(E _不可恢复);
}
break;
案例...
}
}
/继续处理
...
}

//throw()可以用来替换丢失的返回码
//但是要注意这样做造成的性能损失。

扔(S _ OK);
} // ProcessMail()

作废已读邮件(...)
{
...
//这里不需要捕捉异常
nbytes available = read bytes(...)
...
}

Int字节(...)
{
/Read data
if(error){
throw(e _ Read _ error);
}
return nbytes read;
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 使用C++异常来取代exit()函数[2]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情