try catch

 下面情况只能try catch,而不用if else.
一、如

fun()
{
   fun1();
}

fun1()
{
   fun2();
}

fun2()
{
   fun3();
}

fun4()
{
  
}

fun执行了一个连贯动作,如果此时在fun4出现错误,整个连贯动作应立即取消,用if

else的话,需逐层返回,灵活性很差。用try catch马上可以跳到fun函数的catch中,

从而结束整个连贯动作。

二、如

fun
{
   if(lib.fun())
   {
       fun1();
   }
}

fun1()
{

}

如上,如果lib库的fun函数throw了一个错误,
(1)此时不会返回FALSE,从而导致调用了fun1。其实fun1没必要被调用,如果有catch

就可以捕获错误从而跳过fun1.
(2)但实际,fun1可能也不会被调用,因为
lib.fun1 throw出的错误会一层一层往外传直到最外层,然后强行把程序给关掉。
但其实lib.fun1出错没有必要退出程序。

三、有些错误没法用if else来判断。
(1)内存耗尽出错,这就需要try catch来捕获系统的错误消息。

 (2) 构造函数出错,这就需要在构造函数中throw出错误信息,让外层处理。因为构造

函数没有返回错误的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值