异常处理

  我们在使用Java语言高级API进行程序设计之前,我们还需要理解Java语言中另一个基础特色-----异常处理

异常(Exception)是程序在执行过程中所产生的问题。导致异常产生的原因有很多种:

用户输入了无效的数据、找不到一个需要打开的文件、在通讯过程中网络连接断开或者JVM发生了内存溢出

异常的分类:

检查异常-----是用户错误或不能被程序所遇见的问题

运行时异常-----是一个程序在运行过程可能发生的问题

错误-------实际上,错误根本不是异常,但却是用户或程序所无法控制的问题

异常与错误区别:

错误(Error)

  1. 语法错误:最低级的错误---编译期报错,修改为正确的语法
  2. 逻辑错误:编译不报错,运行也不报错,但结果不是我们需要的,往往是算法有问题—编译不报错
  3. 运行时错误:运行期发生错误—不能用代码挽回的,往往是硬件问题和运行环境问题,报错类型名字后面是Error,往往是硬件问题或环境问题,无法用异常处理机制解决

异常(Exception)

检查异常(编译异常CheckedException)--一个方法在声明部分书写了thorws Exception,表示这个方法有可能会抛出异常的,以至于调用者在调用时会受到警告,这种警告标示编译不通过,强制要求调用者对代码进行处理。

处理方法有两种:

一种是继续往上抛,但是不能抛向虚拟机。

一种是调用者用try—catch处理

throws---书写在方法声明的最后,后面跟的是异常类名,而且可以有多个类名(中间由逗号分隔);表明本方法有可能发生某个类型的异常

throw—书写在方法体,后面跟的是异常对象(只能跟一个对象);一旦执行到throw这句代码,就一定会发生异常

如果throw后面的异常对象是编译时异常,那么该方法声明后面必须加throws

如果throw后面的异常对象是运行时异常,那么该方法声明后面可以不加throws

 

运行时异常(未检查异常)--在运行期报错,报错类型名字后面是Exception,可以使用异常处理机制

 

运行时异常处理机制:

  1. 修改源代码,将异常情况避免掉(最好)
  2. 使用异常捕获机制try—catch—finally(不管是否发生异常,都必须要执行的代码)

 Try(试运行){

正常情况下有可能发生异常的代码

}catch(捕获—异常的引用为异常代码变量

 

){

  执行catch块当中的代码

}catch(Exception e){

e.printStackTrace();

}finally{

 

}

当Try后面有多个catch块时候,这多个catch块捕获异常有继承关系时必须遵照子类catch块写前面,父类catch块写后面

System.exit(0)—关闭虚拟机—这句代码才能终止finally

Final:用于修饰不变的,包括常量,终态类,不可重写的方法

Finally:异常捕获机制,不管是否发生异常,都必须要执行的代码

Finalize:销毁机制,GC调用

如果程序员主动抛出一个异常,需要使用throw异常对象

子类重写方法不能比父类被重写方法抛出更多异常,这里的更多指的是范围,而不是个数(异常是有继承关系)

Continue— 跳出循环,进入下一次循坏

Break— 结束这个循环

Return— 结束本方法,或者返回一个值

自定义异常

表示层:任务—做界面

业务层:任务—做业务

持久层:任务—操作数据访问

 

posted @ 2016-06-04 23:05  macro鹏  阅读(139)  评论(0编辑  收藏  举报