Python进阶之路 9.2.2 自定义异常类

版权声明:本教程只限学习交流,不得用于商业用途。 https://blog.csdn.net/weixin_45086637/article/details/91048414

9.2.2 自定义异常类

在很多时候需要自定义异常类。任何一个异常必须是Exception的子类。最简单的自定义异常类就是一个空的Exception类的子类。

class MyException(Exception):
    pass

下面用一个科幻点的例子来演示如何自定义异常类,以及如何抛出自定义异常。

[例 9.1] 本例定义一个曲速引擎(超光速引擎)过载的异常类,当曲速达到10或以上值的时候就认为是过载,这时会抛出异常。

# 定义曲速引擎过载的异常类

class WarpdriveOverloadException(Exception):
    pass


# 当前的曲速值

warpspeed = 12

# 当曲速为10或以上的值时,认为是曲速引擎过载,应该抛出异常

if warpspeed >= 10:

    # 抛出自定义异常
    raise WarpdriveOverloadException('曲速引擎已经过过载,请停止或弹出曲速核心,否则飞船将会爆炸')
else:
    print('曲速引擎没有达到过载,可以正常使用。')

输出结果:

Traceback (most recent call last):
  File "/Users/limingda/PycharmProjects/untitled6/test3.py", line 16, in <module>
    raise WarpdriveOverloadException('曲速引擎已经过过载,请停止或弹出曲速核心,否则飞船将会爆炸')
__main__.WarpdriveOverloadException: 曲速引擎已经过过载,请停止或弹出曲速核心,否则飞船将会爆炸

在执行上面代码时,看到给warpspeed变量的值是12,在if判断语句中设定的是等于或大于10的会执行抛出异常,如果warpspeed变量的值小于10,那么if语句则会执行else子句的内容。

其实在自定义异常类中可以做更多的工作,如为异常类的构造方法添加更多的参数,但到目前为止,关于Python类的更高级应用还没有讲,所以本例只是实现了一个最简单的自定义异常类。关于Python类更高级的内容会在后面讲解,可以利用这些Python类的高级技术编写更复杂的异常类。

猜你喜欢

转载自blog.csdn.net/weixin_45086637/article/details/91048414
今日推荐