科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道JAVA对异常处理解决

JAVA对异常处理解决

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

说明:所谓异常,就是在程序执行中发生的异常状态(参照JISX0007)。作为一种语言的机制,Java提供了异常处理,程序员可以比较容易,并且显式地对异常进行表述。

作者:黑咖啡 来源:IT专家网 2008年5月11日

关键字: 解决 处理 异常 java

  • 评论
  • 分享微博
  • 分享邮件
说明:所谓异常,就是在程序执行中发生的异常状态(参照JISX0007)。作为一种语言的机制,Java提供了异常处理,程序员可以比较容易,并且显式地对异常进行表述。

  但是,就算是Java提供了这种优异的机制,如果不能正确地运用就没有任何意义。经常发生的错误有如下几种情况。

  • 异常交给上一层类了,但是异常的详细内容却被隐藏了。IOException,SQLException等异常只被上一层的Error,Throwable,Exception接收,但是错误的详细内容却被隐藏了。

  • Catch中是空的(未作任何处理)。

  为了不要发生这样的对异常的不当处理,需要使catch到的异常都能交给与该异常相应的类去处理。超类是不能处理catch块中的异常种类的。另外,不允许用空的catch块来处理异常。必须编写适当的异常处理,以便了解异常是如何发生的。

  例:读入文件时的异常处理 

 try {
  reader = new BufferedReader( new FileReader(file));
  reader.read();
  } catch (Throwable t) { // ERROR: 错误的详细信息被隐藏了
  // 记述错误处理
  } finally{
  try{
  reader.close();
  } catch(IOException ioe) { //ERROR: catch块中什么也没写
  }
  }
  修正例:  try {
  reader = new BufferedReader( new FileReader(file));
  reader.read();
  } catch (FileNotFoundExceptionfnfe) { // OK: catch了想定的异常
  // 记述错误处理
  } catch (IOException ioe1) { // OK: catch了想定的异常
  // 记述错误处理
  } finally{
  try{
  reader.close();
  } catch(IOException ioe) {
  // 记述错误处理 // OK:写了异常处理
  }
  }
  作为对异常的处理,有各种各样的方法,比如把发生状况写入Log文并且终止程序,或者对可以预知的异常进行明确的复原处理等等。详细情况请参阅参考文献。

  补充说明: 异常类的分类

  异常类以Throwable为基类按如下方式分类。在实现代码内如果不加以捕捉就会导致编译错误的异常是Exception类的子类(但是不包括RuntimeException类的子类)。

  JAVA

  ① Error类的子类

  无法处理,或者不应该处理的异常  • Java.laERROR.OutOfMemoryError //内存不足

 

 • Java.laERROR.StackOverflowError //StackOverflow
  ② Exception类的子类RuntimeException的子类以外的子类
  • Java.io.IOException //输入输出错误
  • Java.io.FileNotFoundException //找不到文件(IOException的子类)
  • Java.sql.SQLException //DB访问异常
  ③ RuntimeException类的子类
  在程序运行中到处都有可能发生,由程序员的错误造成的异常。或者,在设计时没有考虑到的情况下发生的异常。  • Java.laERROR.ArithmeticException //整数运算时用0做除数 
 • Java.laERROR.ArrayIndexOutOfBoundsException //数组下标错误
  • Java.laERROR.IllegalArgumentException //参数值错误
  • Java.laERROR.NullPointerException //访问空指针错误

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章