异常处理

异常是程序在执行过程中所产生的问题
凡是能够用代码去纠正的就是异常
不能够用代码去纠正解决的就是错误
错误eg:硬件问题,运行环境问题
java中问题分为:异常(Exception)和错误(Error)
异常分类:
编译期异常<——>检查异常:checked Exception
运行时异常<——>不检查异常:unchecked Exception

捕获异常(语法):
try–catch
语法:try{
//正常逻辑下,有可能发生异常的代码
}catch(捕获的异常类型,也是一个引用变量){
处理代码、异常代码

try后面可以接多个catch,且是顺序检查的,当一个异常被抛出的,这个catch执行,其他被忽略
当捕获多个catch的时候,catch之间有继承关系的时候,顺序有关系,把子类写在前面,父类写在后面,不然的话以进来就执行父类的catch,不会在去执行子类的catch了
这里写图片描述
完整的捕获:
try—catch—finally
不管是否发生异常都必须要执行的代码写到finally中
finally直接写在catch完之后
它是不管是否发生异常都必须执行的代码,就算前面有break或者数return等跳转语句,也要先执行finally,在跳转。
使用到资源的清理、通道的关闭以及各种的链接用finally(相当于就是去擦屁股的)
try catch finally 不能单独存在
如果try里面是一个基本数据类型那么finally是不会改变try里面的值
如过try里面是一个引用数据类型,finally会改变try里面的值

throw
throws Exception 写在方法的后面的,表示的是将这个异常抛出,抛到方法调用者去处理,自己不做处理,若一直向上抛,则会抛到虚拟机去处理

这个异常对想是new出来的 eg:Exception ex = new Exception ();

throw 是写在方法体当中的,后面接的是一个异常对象,一旦执行到这句代码,就会真正的发生异常抛出的动作
throws 是写在方法声明的最后,后面跟的是异常类的类名,可以跟多个,中间用逗号隔开。作用是警告方法的调用者,本方法有可能会发生某些类型的异常。

当throw后面跟的是一个运行时异常的时候,编译器不会强制我们在本方法声明后面加上throws。 就算我们自己加上,本方法的调用者也不会编译期收到警告。
如果throw(包括exception)后面跟的编译期异常, 编译器会强制我们在本方法的声明后面加上throws

自定义异常:
自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。(也就是书上老师将的那个图)
1.首先要继承Throwable 后者Exception
2.1书写带参构造,将已发生的异常对象信息封装到自定义异常对象身上
2.2通常还要在写一个带 String 参的异常,这个构造是针对于业务异常的。因为虚拟机产生的异常是直接加减乘除,不管是不是符合逻辑
而这个构造就是将业务异常的信息装入到自定义异常对象身上
3.添加自定义异常的特有方法

Debug:
断点:就是让程序停到某个位置,直接在左边代码行数双击
一句一句执行:F6
进入某个方法:F5
程序顺序向下走,不在调试:F8
Ctrl + shift + I;可以看到具体一个变量的所有属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值