含泪总结,Java中异常处理机制(一)

说到Java前半段的学习,大家的反馈都是轻松或还可以,但随着学习的深入,每个人都会遇到自己的障碍。比如说我,我个人就是在异常那里卡壳了半天,总是不理解其中异常处理的方法。
但皇天不负有心人,在自己不间断地肝完教学视频后,结合书本上的相应知识点,总结了什么叫异常处理。为还在困惑这处的童鞋们带来异常处理知识盛宴。
在这里插入图片描述
饭前甜点!

学习异常处理的目的:异常处理是应对检查程序是否正确的机制,从而预测期间会大量的使用该机制。

异常处理的目的:程序返回到一种安全的状态,并能够让用户执行一些其他的命令,或者是允许用户保留所有操作的结果,并以妥善的方式终止程序。

1.异常的实现:Java是OOP语言(面向对象语言),从而异常的实现,也是通过类来完成的。既然有内部类,那自然有它的继承体系。来来,划重点!Java中的异常类的祖师爷是Throwable类,它下面有两大派系,即Error类Exception类。前者不用过多的介绍。因为它的出现是你程序运行时系统内部产生的错误或者是电脑资源耗尽。这种情况建议你将电脑回炉重造(doge)。重点来了,后者是我们经常打交道的Exception类,它就是异常!当然它的儿子众多,这里就不再一一赘述了(感兴趣的可以看JDK 8.0文档)。

2.异常:指的是程序本身可以处理的错误

3.异常当然也有它的类型,分为检测型异常非检测型异常。前者也叫编译异常,即在写代码时,就会划红线提示你的异常。这种异常的特点就是需要你在运行之前进行改错,否则无法运行。后者是运行异常,即不改错的情况下,依然可以通过编译的异常。

4.这时候肯定会有小伙伴问了,我哪知道Exception中哪些是编译异常哪些是运行异常呢?来来,手把手教你划重点!Exception子类中除了RuntimeException是运行异常,其它的都是编译异常

5.那么编译异常和运行异常哪个跟我们打交道更多呢?我的回答是都有,但要说哪个异常更厉害。毋庸置疑是运行异常,为何这样说呢?运行异常可以通过编译,运行时才报错,编译时它并不显现。到运行是给你致命一击,导致你抓耳挠腮。
在这里插入图片描述
6.系统的学习之前,脑海里面要有大致的知识体系框架嘛,所以我列举一下异常处理机制中的常用的关键字大概作用!
6.1 try:用于检测异常
6.2 catch:用于捕捉异常
6.3 finally:用于释放资源
6.4 throw:抛出异常对象
6.5 throws:抛出异常

7.机上以上的五个关键字的功能,接下来带来你一一领略它们的风采!
其中try与catch以及finally是搭配使用的!使用组合才能打出连招,表现出异常处理机制的风骚。接下来内容放心食用!
format:
try{
// 用于检测的代码
}catch(异常类名 引用){
// 对于异常信息输出
}[catch(异常类名 引用){
// 对于异常信息输出
}

][finally{
// 最终执行的语句
}]

7.1以上就是try、catch、finally的连招秘籍。针对RuntimeException类以及它的子类必杀技之一。
7.2明显的是try语句就是以需要进行检测的代码为其内容,下面介绍的是catch语句中,涉及到异常类名和引用。后者不用多说,符合标识符命名规则与规范即可。
异常类整个体系中辣么多异常?到底用哪个呢?
答:通常开发中使用Exception类作为异常名,但理论上是使用对应的可能出现的RuntimeException类以及它的子类名作为类名!或者使用自定义异常的类名(后续单出一篇详解)!
7.3finally语句,首先通过字面意思就知道它是最终的意思!所以它的首要作用就是大多数情况下都会执行其中的代码。既然是大多数,那不在大多数情况下呢?当然是在它上面的执行到的code中出现了**System.exit(0);**这样的语句,那么这句话有何作用呢?既有如此大的威力,哼!说出来怕吓到你,它可以退出JVM虚拟机(这里涉及到许多内容,不再赘述,但只要知道的是虚拟机的退出,程序就不在运行了!)

7.4运行流程:检测产生异常的代码中产生异常,本质上就是创建异常的对象(即类的实例化),检测中并不相应的类型的引用接收。此时catch的括号中根据所创建的引用用于接收相应的异常!进行异常信息的输出,从而在检测代码中即是会出现了异常,也可以继续的运行下去!最终finally中的语句会执行!

Demo:
在这里插入图片描述
7.5解释:
7.5.1检测异常的代码,很明显涉及到了我们小学三年级都学习过的知识,即除数不能为0!从而我使用了ArithmeticException(Arithmetic:算数)引用用于接收相应的对象!可谓绝配。接着就是catch中的异常信息的输出。
可能会有人疑惑catch中,你写怎么多!我他喵哪知道这些code有啥用!

肯定的告诉你,这些都是异常信息的输出!知道了这些方法有啥用,也需要知道它们是哪里的发法,要不然什么对象能用,什么对象不能用?这可能会困惑你许久,但放心的是它们都是Throwable类中的方法,既然还是祖师爷的方法,它下面的子子孙孙当然可以放心大胆的用!

一一介绍之前,先看看它的输出结果:
在这里插入图片描述
1.首先直接输出的是ArithmeticException的对象,我们小学三年级的时候就知道了直接输出引用,会默认调用大名鼎鼎的toString方法,是的你没听错,它又来了!Throwable类中又双叒叕重写了!它内容是异常类名+异常信息
n
2.其次是通过引用调用getMessage方法,getMessage方法的返回值类型为字符串,内容是产生异常的信息
3.最后是printStackTrace方法,它是JVM虚拟默认对于异常信息的输出,产生的结果是我们熟悉的红色字体,怎么看它呢?重下往上看!倒数一次是产生异常的代码,倒数第二行式产生异常的原因,第一行即是异常类名+异常信息了。

以上就是针对异常信息的常用方法!

总结:以上就是异常处理中的大体内容,并且附加了对于try、catch、finally的使用,在接下来我会一一介绍Java异常处理的全部内容,码字不易,希望大家能够多多支持一下!当然了内容不恰当以及出错的地方希望大家多多指出。大佬们的意见,我都会一一记下来的,在后面能看到我的改正!
在这里插入图片描述

ps:关于异常这一块我做了思维导图,根据我后续的文章搭配食用它不香吗?不用钱!免费!知识无价嘛[doge]。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值