java笔记总结_04_Java异常处理

第十章 Java异常处理

1、异常处理机制
 异常是程序在运行期间发生的不正常的事件,它会打断指令的正常执行流程。
 设计良好的程序应该在异常发生时,提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。
 java语言使用异常处理机制为程序提供了异常处理能力。
 
 异常处理机制:
  1)、抛出异常:Java程序在执行过程中如果出现异常,会自动生成一个异常类对象,该异常对象将被自动提交给JVM,这个过程称为抛出(throw)异常。
  2)、捕获/处理异常:当JVM接收到异常对象时,会寻找能处理这一异常的代码并把异常对象交给其处理,这一过程称为捕获(catch)异常和处理异常。
  3)、如果JVM找不到可以捕获异常的代码,则运行时系统将终止,相应的Java程序也将退出。

2、异常分类
 Object -> Throwable ->
  Error(错误):JVM系统内部错误或资源耗尽等严重情况,属于JVM需要负担的责任。这一类异常事件无法恢复或不可能捕获,将导致应用程序中断。 
  Exception(异常):其它因编程错误或偶然的外在因素导致的一般性问题。这类异常得到恰当的处理时,程序有机会恢复至正常运行状况。
 从编程角度分:
  1)、非受检(unchecked)异常:编译器不要求强制处置的异常。一般是指编程时的逻辑错误。是程序员应该积极避免其出现的异常。
  2)、受检(checked)异常:编译器要求必须处置的异常。指的是程序在运行时由于外界因素造成的一般性异常。
 
3、使用try、 catch、 finally 处理异常
 异常处理语法:
  try{
  // 可能出现异常的代码
  }catch{
  //异常处理代码
  }[finally{
  //无论如何都会执行的代码
  }]
 获取异常信息的常用方法:
  getMessage()
  printStackTrace()
 try,catch,finally使用return时注意几点:
  1.try和finally两者结合使用时,如果try中有return,这时会先执行finally中的代码后返回。
  2.try和catch两者结合使用时,如果try中有return而且没有异常发生,则返回try中值,如果try中发生异常,则返回catch中的数据。
  3.try和catch,finaly三者匹配使用时,在有return时需要结合以上两种情况灵活运用。

4、throw 和throws 关键字
 throw 关键字用在方法代码中主动抛出一个异常。
 如果方法代码中自行抛出的异常是受检异常,则这个方法要用throws 关键字声明这个异常。
 throws 用来声明一个方法可能会抛出的所有异常。跟在方法签名的后面。多个异常类用“,”隔开。
 如果一个方法声明的是受检异常,则在调用这个方法之处必须处置这个异常(谁调用谁处理)。两种处理方式:显示捕获这个异常;继续用throws向上声明。

5、自定义异常类
 自定义受检异常:继承自Exception类,包装Exception类的构造方法。
 自定义非受检异常:继承自RuntimeException类。包装RuntimeException类的构造方法。
 
6、使用异常注意:
 观察抛出的异常的名字和行号很重要。
 调用JDK提供的类的方法前,阅读其API文档了解它可能会产生的异常。然后再据此决定自己是应该处理这些异常还是将其加入throws列表。
 应捕获和处理那些已知如何处理的异常,而传递那些不知如何处理的异常。
 尽量减小try语句块的体积。
 在处理异常时,应该打印出该异常的堆栈信息以方便调试。
 

 

你可能感兴趣的:(java,jvm,编程,exception,object,编译器)