首页 > 代码库 > 异常的处理
异常的处理
异常的父类: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.自己添加的功能和行为
异常的处理