异常(Java)

Exception编译时异常
异常分类
throwable
error不需要管 无法治愈的病
exception(子类) 小毛病
runtimeException
CheckedException

两种处理方法:
1.交给虚拟机处理 中断执行
2.alt + enter 用try {可能出现异常的代码}- catch处理异常{异常的处理逻辑} 可以继续执行

异常产生的过程的解析
1.当产生异常时,在方法体内部会new一个对象 (方法的名字,位置方法所产生的异常)
new ArrayIndexOutOfBoundsException()寻找有无该异常·的try-catch语句,如果没有返回给调用者main方法

main方法获取对象后,同样寻找不到
则返回给调用者虚拟机JVM
JVM执行中断异常
打印在控制台上以红色字体

throw关键字
作用:抛出指定的异常
throw new xxxException(“异常产生的原因)
注意:
1.throw关键字必须写在方法内部
2.throw 后边new的对象必须是Exception或者Exception的子类对象
3.throw关键字指定的异常对象,我们必须处理它,
分为两种情况:
a.若果是runTimeException及其子类 ,默认交给jvm处理;
b.编译时异常,就必须throws或者try-catch
4.nullPointerException是runTIme(具体查api)的异常
我们要对传递来的参数进行合法性检验就需要用到throw

Objects的非空判断
它拥有一些静态方法可以检测空指针异常,
public static requireNoneNull(T obj);
public static requireNoneNull(T obj,String “Wrong Reason”);
检测nullPointerException

throws关键字
使用throws是交给方法调用者处理(自己不处理,给别人处理)最终交给JVM处理–> 最终中断处理
格式:
修饰符 返回类型 方法名(参数列表) throws AAAException,BBBException{
throw new AAAException(“原因”);
throw new BBBException(“原因”);
}
1.注意:
1.thows关键字必须写在方法声明处;
2.声明的对象是Exception,或其子类;
3.方法内部如果声明多个Exception,必须声明多个
如果有子父类关系,直接声明父类即可
4.调用一个声明抛出异常的方法,我们就必须处理声明的异常
1.JVM
2.try–catch语句

try-catch语句解决:
格式:
try{
//可能出现异常的代码
}catch(定义一个异常的变量){
异常的逻辑处理
一般在工作中传入某个日志中
}

catch(Exception e){

}
注意;
1.多个异常,多个catch
2.try中出现异常首先执行catch中的语句,再执行后续代码

Thrownable类

3个处理异常的方法:
String getMessage() 返回此thrownable的简短叙述
String toString() 重写Object类的toString()方法,比上一个方法多一个异常类名返回thrownable的详细消息字符串
void printStackTrace() JVM打印异常对象,默认此方法,打印的信息是最全面的

finally代码块

与try{

}catch(){

}
finall{
//无论是否出现异常都会执行
//不能单独使用
//一般用于资源释放或资源回收
}

多个异常如何捕获

多个异常分别捕获
多对try–catch
多个异常一次捕获,多次处理
一个try多个catch
如果异常有子父类关系,必须将子类写在上面
多个异常一次捕获一次处理
Exception e

如果finally豫剧有return语句永远返回finally的结果
子父类之间异常关系
父类异常什么样,子类异常什么样;
1,假如父类某方法有异常,子类重写该方法时,应抛出同样的异常或其子类
2.父类无异常时,子类也无法抛出,但是可以捕获处理

自定义异常类

1,由于java本身的异常类不够使用,需要我们自己定义
2.格式:
public class XXXException extends Exception/RuntimeException{
//添加一个带空参的构造方法
//添加一个带String参数的构造方法

}
注意:
1.自定义的需要用Exception为结尾
2.自定义如果是RuntimeException 就有JVM完成
如果是Exception 1.throws 2.try–catch

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值