Java的异常处理机制

						Java的异常处理机制

1、 java异常处理机制
java的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。
2、 异常发生原因
异常发生原因有很多,通常包含以下几大类:

  1. 用户输入了非法数据。
  2. 要打开的文件不存在。
  3. 网络通信时连接中断,或者JVM内存溢出。
    这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其他一些事因为物理错误引起的。
    要理解java异常处理是如何工作的,你需要掌握以下三种类型的异常:
  4. 检查性异常:最具代表的检查性异常是用户错误或问题引发的异常,这种程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单忽略。
  5. 运行时异常:运行时异常是可能被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略。
  6. 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
    3、捕获异常
    Java异常处理机制为:抛出异常,捕抓异常,处理异常。
    通过使用try…catch来捕获异常,try…catch语法结构
    :try {
    //业务功能代码
    } catch(异常类1 e1) {
    //异常处理代码1
    } catch(异常类2 e2) {
    //异常处理代码2
    }…catch(异常处理n en) {
    //异常处理代码n
    }
    在使用try…catch捕获处理异常时需要注意:
  7. 不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句。
  8. 异常捕获时,一定要先捕获小异常,在捕获大异常。否则小异常将无法被捕获
  9. 避免出现庞大的try块
  10. 避免使用catch(Exception e){}
  11. 不要忽略异常
    4、 Exception类的层次
    所有的异常类是从java.lang.Exception类继承的子类
    Exception类是Throwable类的子类。除了Exception类外,Throwable还有一个子类Error。Java程序通常不捕获错误。错误一般发生在严重故障时,它们在java程序处理的范围之外。Error用来指示运行时环境发生的错误,例如,JVN溢出。一般的程序不会从错误中恢复。
    异常类有两个主要的子类:IOException类和RuntimeException类。
    5、 finally块
    finally块一般用来关闭物理资源(数据库连接、网络连接、磁盘文件等),这些物理资源必须显式关闭。除非在try块、catch块中调用了退出虚拟机的方法(System.exit(0);),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块一定会被执行。
    6、 使用throws和throw抛出异常
  12. throw
    java也允许程序自行抛出异常,自行抛出异常使用throw语句来完成(注意此处的throw没有后面的s)如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例
  13. throws
    使用throws声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,给异常应该由上级调用者处理;如果main方法也不知道如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方式是,打印异常的跟踪栈信息,并中止程序运行。
上一篇:ArrayList源码解析:集合的遍历和一些其他方法


下一篇:C++ | C++异常处理