13-异常

2023-04-10  本文已影响0人  飘摇的水草
简介

程序运行过程中,代码遇到的错误,给出错误的提示
异常:程序代码在运行过程中遇到的错误,程序会报错,会终止程序代码的运行

捕获异常
try: 
    可能发生异常的代码
except 异常的类型:
    发生异常执行的代码

示例代码如下所示:

try:
    num = input("请输入一个数字:")
    num = 10 / int(num)
except ZeroDivisionError:
    print "你输入有错,请重新输入"

在上面的代码里只能捕获 ZeroDivisionError 这种类型的异常

捕获多个类型的异常

要想捕获多个类型的异常,可以写多个 try except,也可以在 except 那里将多个异常组成元组,如下所示:

try:
    a = input("请输入一个数字:")
    num = int(a)
    num = 10 / num
except  (ZeroDivisionError , ValueError ):
    print "你输入有错,请重新输入"

或者写成下面这种

try:
    a = input("请输入一个数字:")
    num = int(a)
    num = 10 / num
except ZeroDivisionError:
    print "你输入有错,请重新输入"
except ValueError:
    print "请输入数字"
打印异常信息

通过添加 as 的方式打印出异常信息,如下所示:

try:
    a = input("请输入一个数字:")
    num = int(a)
    num = 10 / num
except ZeroDivisionError as e:
    print ("你输入有错,请重新输入", e)
except ValueError:
    print "请输入数字"
捕获所有的异常

通过下面的方式可以捕获所有的异常信息

try:
    # 可能发生异常的代码
except Exception as e :
    # 发生异常执行的代码
     print e
异常的完整结构
try:
    # 可能发生异常的代码
except Exception as e :
    # 发生异常执行的代码
     print e
else:
    # 代码没有发生异常会执行
finally:
    #不管有没有发生异常,都会执行
异常的传递

这个是异常处理的底层机制,是原理层面上的,不需要我们自己写代码实现,是python已经实现好的

抛出自定义异常

程序代码报错的原因是不符合语法,Python 的作者在代码中使用了 if 判断,如果代码有错就抛出异常错误:

抛出异常:
       raise 异常对象

抛出自定义异常:
       1. 自定义异常类,继承 `Exception` 或者 `BaseException`
       2. 选择书写,定义 `__init__` 方法,定义 `__str__` 方法
       3. 在合适的时机抛出异常对象即可 

如下所示:

class Password(Exception):

    def get_password(self):
        password = input("请输入密码:")
        if len(password) >= 6:
            print "密码长度合格"
        else:
            raise PasswordLengthError("长度不足6位")

try:
    get_passwod()
except PasswordLengthError as e:
    print e
上一篇 下一篇

猜你喜欢

热点阅读