异常处理
Posted 竹狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。
一、异常基本介绍
概念:将程序中发生的不正常情况称为“异常”,异常分为两类:运行时异常和编译时异常
二、异常体系图
三、异常处理方式
一、try...catch...finally
程序员在代码中捕获发生的异常,然后自行处理,处理机制:
没有finally的异常捕获方式
二、throws
将发生的异常抛出,交给调用者来处理,最顶级的处理着就是JVM,处理机制:
1、如果一个方法在执行中可能生成异常,但不确定如何处理这种异常,则此方法应显示的声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
2、在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是他的父类
三、使用细节
- 对于编译异常,程序必须处理
- 对于运行时异常,程序如果没有处理,默认就是throws的处理方式
- 子类重写父类方法的时候,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的一致,要么为父类抛出的异常类型的子类型
- 在throws过程中,如果有方法try...catch,就相当于处理异常,不必使用throws
四、自定义异常
当程序中出现了某些错误,但该错误信息并没有在throwable子类中处理,这个时候可以自己设计异常类,用于描述该错误信息
一、自定义异常步骤
- 定义类,自定义异常类名继承Exception或者RuntimeException
- 如果继承Exception,则属于编译异常
- 如果继承RuntimeException,则属于运行异常
二、throw和throws区别
我亦无他,唯手熟尔
以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )