文章目录

  • python初识异常
  • 异常中的finally
  • 自定义异常类型与自定义抛出异常
  • 自定义抛出异常---raise关键字
  • 自定义异常类型
  • 扩展:try except finally else结合使用


python初识异常

异常中的finally

无论是否发生异常,一定会执行的代码块

在函数中,即便在try或except中进行了return也依然会执行finally语法块

try至少要伴随except或finally中的一个来使用

finally 相当于整个异常处理语句的收尾工作

try:
    <代码块1>
except:
    <代码块2>
finally:
    <代码块3>

例子:

注意代码的执行顺序:

finally使用 python python的finally_finally使用 python

思考:如果finally中也return了,那么会触发哪个return呢?

答:只会返回finally的return

finally使用 python python的finally_finally使用 python_02

try只与finally结合使用的情况

如果try结合finally使用,不结合except的话会是什么效果?

答:不会抛出异常:

finally使用 python python的finally_自定义_03

真正在编写代码的时候,不建议这么使用,还是要把异常友好的返回出来。

自定义异常类型与自定义抛出异常

自定义抛出异常—raise关键字

将信息以报错的形式抛出

当python执行到raise关键字的时候,python解释器会将raise后面的错误信息抛出

raise 异常类型(message)
# message:错误信息
# 无返回值

例子:

finally使用 python python的finally_python_04

raise抛出的异常也可以被try except捕获:

注意,raise抛出的是什么异常类型,except在捕获异常的时候要么就是用这个异常类型,要么就用通用异常类型。

finally使用 python python的finally_异常类型_05

自定义异常类型

如何自定义异常类型:

  • 继承基类–Exception
  • 在构造函数中定义错误信息
class <自定义异常类型>(Exception):
    def __init__(self, message):
        self.message = message

例子:

finally使用 python python的finally_自定义_06

扩展:try except finally else结合使用

try except else结合使用时,如果没有抛出异常则执行else中的内容

例子:

自定义一个异常,判断用户输入的字符串长度,如果小于5,则抛出自定义异常。没有抛出异常则提示没有异常发生。最后将用户输入的字符串打印出来。

finally使用 python python的finally_开发语言_07