首页 > 代码库 > 异常的处理

异常的处理

异常的父类:Throwable

异常的处理1

一、捕获:使用try—catch—finally语句

1.如果一段代码当中有多个异常可用多个catch语句进行捕获,处理完成以后再加个catch捕获异常的父类,主要针对我们没有捕获到的异常

2.当try块接多个catch的时候,无继承时,顺序可变,如果有继承关系,则把子类异常类型写在前面,把父类异常类型写在子类之后,否则会报错

二.向上抛:使用throw 或throws

三.异常变量名.printStackTrace():打印异常的堆栈信息,开发测试阶段打印出未知异常的信息,便于进行代码的调整,进行阶段,往往会把这句代码给注释掉

注意语法细节

1.catch块是有顺序的

2.try—catch—finally都不允许单独存在

3.catch—finally前面必须有try块

finally

1.finally:不管是否发生异常都必须要执行的代码,(就算前面有return等也会执行,除非用System.exit才能阻止它的执行)

finally

1.资源清理

2.连接的关闭

3.管道的关闭

异常的处理,有三种选择

1.捕获这个异常,不让它沿着调用栈继续向下抛出

2.捕获这个异常,并继续向下抛出

3.不捕获这个异常,从而导致方法从调用栈中被弹出,异常对象继续抛给调用栈下面的方法

异常与错误的分类

异常(Exception)

1.编译时异常

2.运行时异常

错误(Error):无法用代码挽回,往往是硬件或环境变量有问题

异常的重要性

1.没有没有异常的程序

2.80%的精力,20%处理异常

异常处理2

在方法声明后面实现前面,用throws关键字后面跟上会抛出的异常类型的类名,表示本方法有可能会抛出某种类型的异常

throws关键字:用于抛出异常,throws后面跟的是异常类的名字,多个异常可用(,)隔开

注意

1.一个方法的完成声明形式包括了throws,甚至main方法也可以用throws

2.方法重写的方法被更新,增加子类被重写方法不能比父类抛出更多的异常(更多的异常指的是范围,不是个数

3.只有在抛出编译时异常的时候,调用者才会受到警告,抛出运行时异常,调用者不会在编译期被警告

throw与throws的不同

throw

1.位置不同,throw是写在方法体中的,是一条执行语句

2.后面接的是一个异常对象

3.含义不同,一旦执行到throw语句,就会真正的发生一个异常对象,被抛出的动作

throws

1.是写在方法声明后面,是条声明语句

2.后面接的是一个或多个异常类的类名

3.表示本方法有可能抛出某几种类型的异常,仅在编译期提示调用者,运行期不一定发生

自定义异常

1.必须是异常类,是个Throwable(Exception)子类

2.自己添加的功能和行为

 

异常的处理