异常处理
Posted henji1266
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。
一、异常处理
--代码出现错误时,导致整个程序无法继续运行,需要用到try/except/else语句来对抛出的异常进行处理,让程序可以继续往下运行。
格式:
try:
代码块 #这里放置可能发生错误的代码块,当没出现异常时,正常执行
except 类型名 【as 异常名】(实质是异常类型实例化的一个对象):
代码块 #这里放置出现异常时如何进行处理的代码块
except 类型名 as 异常名(实质是异常类型实例化的一个对象):
代码块 #这里放置出现异常时如何进行处理的代码块
except 类型名 as 异常名(实质是异常类型实例化的一个对象):
代码块 #这里放置出现异常时如何进行处理的代码块
except 【exception】【as 异常名】:
代码块#可以捕获所有的异常
else:
代码块 #这里放置程 序正常执行时,执行的代码块。
finally:
代码块。无论错误发生或者不发生都会执行。
注意:try语句是必须的 else语句可以省略 except 和 finally至少有一个
二、异常的分类
--函数内部的异常:函数内部发生的错误,会传递到函数调用处,若被处理掉则异常消失,如若不然则异常一层层往上传递,直到全局作用域,如若还没处理,则直接报错,程序停止运行。Traceback错误回溯,最后一行代码为错误的根本发生处,需要对该处进行检查。
--全局异常:若果没有处理则直接报错,程序停止运行。
--所有异常类型都是Exception的子类
三、异常的本质
--发生异常时,异常信息会存储到异常对象中,通过类似TypeError类型实例化一个对象来存储该异常信息,然后通过对象的方式进行异常传递。
四、主动抛出异常
--为了主动告知调用者发生了错误,避免一些重大损失,可以在程序执行过程中主动抛出异常用来提醒。比如付款过程中,可能一些原因导致无法付款,就需要抛出异常提醒 收银员,防止错误的交易。
--主动抛出异常用raise。例子:if a < 0: raise Exception(【异常提示内容】)
--自定义异常类型。例子:class MyError(Exception): pass
以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )