• python对异常的处理


    了解异常
        当检测到一个错误时,解释器就无法继续执行了,反而出现一些错误的提示,这就是异常。
    测试:
    f = open('test.txt','r') #以读模式打开文件,文件不存在则报错

    运行了解释器报错
    避免出现异常提示的写法
    1. #需求:尝试打开test.txt(r),如果文件不存在,只写方式打开 w
    2. try:
    3.     可能发生错误的代码
    4. except:
    5.     如果出现异常执行的代码
    6. try:
    7.     f = open('test.txt','r')
    8. except:
    9.     f = open('tst.txt','w')
    异常提示就没有了
    捕获指定异常
    语法
    1. try:
    2.     可能发生错误的代码
    3. except:
    4.     如果捕获到该类型异常执行的代码
    体验   #尝试打印未定义的num
    1. try:
    2.    print(num)    #未定义num
    3. except NameError:
    4.     print('有错误') #当捕获到异常后执行的代码
    捕获到的异常类型   执行了异常后 执行 的代码  
    注意:
        1.如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
        2.一般try下方只放一行尝试执行的代码。
    捕获多个指定异常
        当捕获多个异常时,可以把要捕获的异常的类型的名字,放到except后,并使用元组的方式进行书写。
    1. try:
    2.    print(1/0)
    3. except (NameError,ZeroDivisionError):
    4.     print('有错误')
    捕获异常描述信息  加上 as 别名
    1. try:
    2.    print(1/0)
    3. except (NameError,ZeroDivisionError) as result:
    4.     print(result)  #print(result)
    使用Exception捕获所有异常
    1.     Exception是所有程序异常类的父类。
    2. try:
    3.    print(num)
    4. except Exception as result:
    5.     print(result) #name 'num' is not defined
    异常的else
        else表示的是如果没有要执行的代码
    1. try:
    2.    print(1/0)
    3. except Exception as result:
    4.     print(result)  #print(result)
    5. else:
    6.     print('我是else,是没有异常的时候执行的代码')
    异常的finaly
        finally表示的是无论是否异常都要执行的代码,通常放在关闭文件。
    1. #需求:尝试打开test.txt(r),如果有异常,最终关闭文件
    2. try:
    3.     f = open('test100.txt','r')
    4. except Exception as e:
    5.     f = open('test100.txt', 'w')
    6. finally:
    7.     f.close()
    异常传递
    体验异常传递
    需求:
    1、传递只读方式打开test.txt文件,如果文件存在则读取文件内容,文件不存在则提示用户即可
    2.、读取内容要求:尝试循环读取内容,读取过程中如果检测到用户意外终止程序,则except捕获异常并提示用户
    1. import time
    2. try:
    3.     f = open('test.txt')
    4.     #尝试循环读取内容
    5.     try:
    6.         while True:
    7.             con = f.readline()
    8.             #如果读取完成退出循环
    9.             if len(con) == 0:
    10.                 break
    11.             time.sleep(3)
    12.             print(con)
    13.     except:
    14.         #在命令提示符中如果按下Ctrl+c结束
    15.         print("程序被意外终止")
    16. except:
    17.     print('该文件不存在')
    自定义异常
        在python中,抛出自定义异常的语法为raise异常类对象。
    需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)。
    1. #1.自定义异常类,  继承Exception,魔法方法有init和str(设置异常描述信息)
    2. class ShortInputError(Exception):
    3.     def __init__(self,length,min_len):
    4.         #用户输入的密码长度
    5.         self.length = length
    6.         #系统要求的最少长度
    7.         self.min_len = min_len
    8.     #设置异常描述信息
    9.     def __str__(self):
    10.         return f'您输入的密码长度是{self.length},密码不能少于{self.min_len}'
    11. def main():
    12.     #2. 抛出异常:尝试执行:用户输入密码,如果长度小于3,抛出异常
    13.     try:
    14.         password = input('请输入密码:')
    15.         if len(password) < 3:
    16.             #抛出异常类创建的对象
    17.             raise  ShortInputError(len(password),3)
    18.     # 3. 捕捉该异常
    19.     except Exception as result:
    20.         print(result)
    21.     else:
    22.         print("没有异常,密码输入完成")
    23. main()


    异常总结
    异常语法:
    1. try:
    2.     可能发生异常的代码
    3. except:
    4.     如果出现异常执行的代码
    5. else:
    6.     没有异常执行的代码
    7. finally:
    8.     无论是否异常都要执行的代码
    捕获异常语法
    1. except 异常类型:
    2.     代码
    3. except 异常类型 as xx:
    4.     代码

    自定义异常语法
    1. #1.自定义异常类
    2. class 异常类名(Exception):
    3.     代码
    4.     #设置抛出异常描述信息
    5.     def __str__(self):
    6.         return ...
    7. #2. 抛出异常
    8. raise  异常类名()
    9. # 3. 捕捉该异常
    10.     except Exception...

  • 相关阅读:
    BZOJ 4612([Wf2016]Forever Young) 题解
    如何识别图片文字?这几个识别图片文字软件简单又高效
    linux 命令curl`详解
    人工智能知识全面讲解:特征工程
    2023年最佳研发管理平台评选:哪家表现出色?
    学习码 滚动码 固定码 有什么区别重码数,编码容量滚动码的原理
    java计算机毕业设计springboot+vue网络体检服务系统
    工业物联网模块应用之砂芯库桁架机器人远程无线控制
    怎么办理装饰装修二级资质,装饰装修二级资质办理条件有哪些
    seaborn学习2:displot()
  • 原文地址:https://blog.csdn.net/gyqailxj/article/details/128122744