当前位置:  技术问答>java相关

关于违例的问题

    来源: 互联网  发布时间:2015-02-23

    本文导语:  我按照书上讲述的违例写了下面的例子: public class aaa { public static int abc(int i,int j) throws Exception {          if (j==0)          {  throw new Exception();          }  else  return (i/j); } public static...

我按照书上讲述的违例写了下面的例子:
public class aaa
{
public static int abc(int i,int j) throws Exception
{
         if (j==0)
         {
 throw new Exception();
         }
 else
 return (i/j);
}

public static void main(String[] args) 
{
int k,h=5;
try
{
    k=abc(h,0);  
    System.out.println(k);
}
catch(Exception e)
{
k=h/1;
}
}
}

代码的意思是说,k=abc(h,0);将产生一个违例,然后执行catch(Exception e),我的理解是执行完catch(Exception e)后应该回到刚才的起点,可以继续执行k=abc(h,0);后面的语句,但结果是不行的,程序似乎到此就结束了,请问谁能告诉我为什么吗?

|
请认真看那段文章。
你要考虑,如果这些异常情况发生了,你打算怎么办?是调用出错处理,结束这段代码(try块)的执行还是要采取一些修正措施,重新执行(你要保证肯定能修复,否则就如你所说,死循环啦)
所以一般情况下,我们都是这么做的:
 无论谁,只要“掷”出一个违例,就表明没有办法补救错误,而且也不希望再回来。
try{
//可能产生异常的代码
}
catch{
}
根据java异常机制的定义,在发生异常(throw Exception)时,系统是去跳转(就是忽略try{}块里,发生异常后面的代码),寻找对应的catch()块执行。
在你想要恢复”时,就要人为!!!的在catch()后作修正,在返回调用try{}块,比如用循环,除非执行到try{}的最后一句(在那里加上跳出循环的控制)。
------所以尽管“恢复”表面上十分不错,但在实际应用中却显得困难重重。其中决定性的原因可能是:我们的控制模块必须随时留意是否产生了违例,以及是否包含了由产生位置专用的代码。这便使代码很难编写和维护——大型系统尤其如此,因为违例可能在多个位置产生。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问java中如何在捕获一个违例之后再返回到发生违例的地方?
  • 如何应付Java违例不允许我们恢复至违例产生地方?
  • 如何处理违例比较好?详情见内。
  • 请问为什么有些向下造型会产生违例,有些却一切正常?请大侠总结一下 
  • 这个hello world程序为什么会段违例呢?
  • 奇怪自己为什么不能抛出违例??throw new TimeOutException("time out");
  • 这个违例是因何而产生?如何消除?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3