Java 异常

异常继承体系

Throwable

所有错误和异常的基类

错误Error :比如数组空间开辟过大,错误一般是严重性的问题,必须修改程序才能继续运行

异常Exception:可以通过程序处理

运行时异常RuntimeException: 凡是方法内部抛出的是运行异常,方法声明上不需要throws

异常产生原因

  1. 创建了异常对象
  2. 将异常对象进行抛出,抛给方法的调用者

异常一旦抛出,后面程序不再执行

  1. 如果最后没有接受异常,将抛给JVM,虚拟机将异常信息以红色字体打印,并停止程序运行

throw关键字

throw 写在方法内,后面跟的对象必须是可抛异常

throw new Exception("空指针异常");

throws 关键字

throws 写在方法声明上,用于告知外界内部有异常,并向上处理

当throws方法调用时,必须处理异常,如果处理不了,也可以继续向上抛出

public static int getArr() throws Exception {
    throw new Exception("空指针异常");
}

try catch finally 关键字

try {
    // 被检测的代码(可能出现异常的代码)
} catch (异常类名 变量) {
    // 异常处理方式
} finally {
    // 必须要执行的代码
}

有了catch代码块后,异常即可被捕获并处理掉,处理完毕后,可以继续执行

多catch 要注意异常直接有继承关系时,异常捕获是有顺序的

finally 通常可以用于释放资源

RuntimeException

运行时异常RuntimeException: 凡是方法内部抛出的是运行异常,方法声明上不需要throws

设计原因:运行时异常是本不应发生的,一旦发生最好修改源代码解决,而不是程序处理,因为一旦发生运行时异常,后面的代码将没有执行的意义

异常在重写上的细节

父子类的重写方法,父类抛出了异常,子类可抛可不抛,但是如果要抛出异常,异常级别不能大于父类,平级也不行

如果父类没有抛出异常,子类也不能抛(为了多态调用)即使有异常,也只能自己手动try catch处理掉

常见方法

String getMessage()

异常信息的详细描述

toString()

异常信息的简短描述

void printStackTrace()

将异常信息追踪到标准错误流,是最详细的

自定义异常

自定义异常类,一般是继承Exception类,或者RuntimeException

加上构造器来传递异常信息给父类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值