Java 异常详解

135 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 本篇博客仅供博主一人学习使用,内容从视频或者是书中中总结而来,用作复习时的笔记。

1.前言:

博主大二学生,大一和大二都在打acm(垃圾二本成绩比较菜),学习算法, 但是java课开了,因为没有什么时间去过多敲java代码,所以只好先认真学习知识点。

2.异常的基本概念

基本概念

异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出异常. 博主理解:异常就是很多种错误,异常就是有异于常态,和正常情况不一样,有错误出错,简而言之就是超出你代码的理想运行状态,从而使得程序不能执行。

因为如果不处理这种情况的话,程序会崩溃,java语言将绝大部分可能出现的异常写成了类,下面是异常的分类,。 在这里插入图片描述

异常的分类

异常主要分为:错误、非运行时异常、运行时异常 简单介绍:

Throwable是Error和Exception的基类.
Error表示编译时和系统错误(除特殊情况外一般不用你关心),
Exception是可以抛出的基本类型.
运行时异常(RuntimeExcption),
他们会自动被虚拟机抛出,
就是编写的方法中不需要显示的抛出RuntimeException. 运
行时异常被称为"不受检查异常",
这种异常属于错误,将被自动捕获,不需要你亲自动手.

错误 如果应用程序出现了Error,那么将无法恢复,只能重新启动应用程序,最典型的Error的异常是:OutOfMemoryError

非运行时异常(编译时异常) 这种异常属于一般性异常,出现了这种异常必须显示的处理,不显示处理java程序将无法编译通过。编译器强制普通异常必须try…catch处理,或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常。

运行时异常 RuntimeException 逻辑不严谨或者是考虑不周全 这种系统异常可以处理也可以不处理,所以编译器不强制用try…catch处理或用throws声明,所以系统异常也称为unchecked异常。

运行时异常类 :RuntimeException 的衍生类 常见的如下: 在这里插入图片描述 编译时异常类 :非运行时异常类(编译时就报错,必须先处理,很少) 常见的如下: PraseException

3.处理流程:

3.1抛出异常后的流程:

1.在堆上创建异常对象 2.当前的执行路径中止 3.前环境抛出异常对象的引用(扔给调用者) 4.异常处理机制接管程序.(jvm在控制台输出异常栈信息数据) 5.终止运行代码

3.2异常处理方式

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

4.自定义异常在这里插入图片描述

在这里插入图片描述