异常相关知识点

异常 概述

(常用功能,光标选中报错区域,按下alt+回车,会显示处理方法,根据需要选择处理方法即可)

在这里插入图片描述

jvm默认处理

在这里插入图片描述

异常处理

try…catch

在这里插入图片描述
特点:会继续执行报错之后的代码,而不会终止程序。

具体代码
在这里插入图片描述
这里采用调用方法的形式,去调用try…catch
try{
放入可能会出错的代码
}catch(这里放入报错类对象,可以去打印台复制){
调用该对象的printStackTrace方法
}

Throwable(报错类的超类)成员方法

在这里插入图片描述

在这里插入图片描述
直接利用报错类对象进行方法调用,例如e.getMessage,会有一个返回值


在这里插入图片描述
三(最为常用)
在这里插入图片描述

编译异常与运行异常的区别

在这里插入图片描述
在这里插入图片描述
try中的内容属于编译是异常,可能会发生错误,所以,编译无法通过,这时想要编译通过,要不就修改代码,改为正常,要不就try…catch进行报错打印;

异常处理之 throws

具体代码

在这里插入图片描述
在这里插入图片描述
在方法的括号后面 加入 抛出类+异常类名
注意 抛出异常 只是暂时将异常延缓处理,对于编译时异常 先进行抛出 之后还需要回到主函数里采用try…catch进行异常处理。

自定义异常

格式

在这里插入图片描述
带参构造器,可以将输入的字符串传给超类
在这里插入图片描述
从而将输入的字符串在控制台打印出来,可用于标明错误原因。

注意自定义异常类抛出时需要手动抛出,且关键字去掉s,如下图
在这里插入图片描述
区别与系统内异常类的抛出,自定义异常类抛出时,需要在代码体中加入throw new 自定义异常类名();同时还需要在方法括号后面加入 抛出(这里throw正常带上s),如图
(注意,对于采用异常类的teacher类,仅仅是将异常抛出,并未处理,主函数里仍然要用try…catch去处理,如下图)
在这里插入图片描述
在这里插入图片描述

总结

自定义异常就是定义一个类,继承着异常超类Exception,且可以重写超类中的方法,可以定义成员,用于存储一些信息

作用是精准的使用catch捕捉异常,以及在一些个性化的条件下个性化报错信息:
主要思路:主要是在try中,自定义抛出时机,且抛出自定义异常时,使用有参构造,进行个性化报错信息的传递:
1、只是输出个性化的一串字符串:
在try中自定义抛出条件(或者看try中调用的函数,在这些函数体内自定义抛出条件也可),且throw自定义类对象时,使用有参构造,String为参数,传到有参构造之后,使用super(参数)传给超类,从而在catch中可以使用超类对象的打印方法打印个性化字符串,实例见上面
2、需要拿到某些数据,之后在catch的时候返回出来:
在try中自定义抛出条件(或者看try中调用的函数,在这些函数体内自定义抛出条件也可),有参构造时,参数为int,这时拿到数据不传给超类,而是传给自己定义的成员变量,之后定义自己的方法返回异常数据,可以在catch中创建自定义异常对象,调用这些方法返回存储的异常数据,或者可以重写超类的某些方法(只剩tostring、getmessage),重写内容为返回存储的数据,这样就可以在catch自定义异常对象时,创建超类异常对象,调用该方法拿到数据(当然重写的话也可以创建自定义异常对象来调用方法),实例:
在这里插入图片描述
而至于用不用throws,都可以,他只是try的内容不同,本质是一样的
如果不用throws,如果是系统异常,则在try中直接无视错误即可
如果是自定义异常,在try中需要手动throw抛出
如果用throws,则将try的内容放入一个函数的函数体中,在函数名最后写上throws 异常类,之后在try中调用该函数即可
throws:将异常交给函数调用者处理,不使用throw,将异常按顺序向下处理,总之要保证最后异常要被交到try块里
(与其用在主函数同级的函数还是用在别的类的成员方法中是无关的)

补充:
如果只是单纯的想要自定义报错信息,可以在catch中,不调用异常对象,而是直接system.out.println

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值