Java异常

异常的格式
//第一种
try{
//需要被检测的代码,比如除数有可能为0的这种代码
}catch(){
//处理当发生异常代码
}

//第二种
try{
}catch(){
}finally{
//一定会执行的代码(通常是关闭资源的,因为资源必须被释放)
//finally只有一种情况不会执行,当前一行有System.exit(0);则不会执行
}

//第三种
try{
}finally{
}
异常体系:
Throwable
  |-Error
    |-VirtulMachineError(虚拟机运行错误)
  |-Exception
    |-RuntiemException(运行时异常)
        |-NullPointerException(空指针异常)
        |-ArithmeticException(算术异常)
        |-ArrayIndexOutOfBoundsException(数组下标越界异常)
  • 异常体系的特点:
    异常和错误的区别是,异常时可以被处理的,而错误是没法处理的。
    异常体系中的所有类以及建立的对象都具有可抛性,也就是说可以被throw 和throws关键字所操作,只有异常体系具备有这个特点。
  • 检查异常和非检查异常(对javac来说)
    Checked Exception:
    检查异常除了Error和RuntimeException的其他异常。这样的异常一般是由程序的运行环境导致的。如SQLException、IOException、ClassNotFoundException 等。当函数上当有throw抛出异常对象,并未进行try处理,必须要在函数上声明,否则编译失败。
    比如:
    在这里插入图片描述
    而RuntimeException和其子类异常除外,也就是说,函数内涂过抛出RuntimeException或其子类异常,函数上可以不用声明,也可正常编译通过。
    在这里插入图片描述
    Unchecked Exception:
    非检查异常有Error和RuntiemException以及他们子类,在javac编译时,不会提示发现这样的异常。因为这样的异常多半是代码写的有问题。应该修正代码,而不是去通过异常处理器处理。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。
throw 和throws的用法

throw定义在函数内,用于抛出异常对象
throws定义在函数上,用于抛出异常类。可以抛出多个异常,用逗号隔开即可

异常处理原则

处理方式有两种:try 或throws
调用到抛出异常的功能时,抛出几个,就处理几个 一个try对应多个catch
多个catch,父类的catch放到最下面。catch内,需要定义针对性的处理方式,不要简单的定义printStackTrace输出语句,也不要不写,当捕获到的异常,本功能处理不了时,可以继续在catch中抛出.
try{
throw new AException();
}catch(AException e){
throw e;
}

自定义异常

定义类继承Exception 或则RuntimeException
1. 为了让自定义异常具有可抛性
2. 让该类具备操作异常的共性方法

当要定义自定义异常的信息是,可以使用父类已经定义好的功能
异常信息传递给父类的构造函数
class MyException extends Exception{
MyException(String message){
super(message);
}
}

自定义异常,按照java的面向对象思想,将程序中出现的特有问题进行封装,将正常流程代码和问题处理代码相互分离,方便阅读。
在子父类覆盖时,子类抛出的异常必须是父类异常的子类或者子集
如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值