一文读懂Python异常

Python异常

目录

1什么是异常?

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行

2 python中常见异常

关键字:try、except、finally、else、raise

python中捕捉异常模块try/except,其中python中有一些自定义的异常,具体如下

  • AttributeError 调用不存在的方法引发的异常

  • EOFError 遇到文件末尾引发的异常`

  • ImportError 导入模块出错引发的异常

  • IndexError 列表越界引发的异常

  • IOError I/O操作引发的异常,如打开文件出错等

  • KeyError 使用字典中不存在的关键字引发的异常

  • NameError 使用不存在的变量名引发的异常

  • TabError 语句块缩进不正确引发的异常

  • ValueError 搜索列表中不存在值引发的异常

  • ZeroDivisionError 除数为零引发的异常

3异常的捕获

try:
except Exception:
finally:


  • 自定义异常

    # 自定义异常类
    class AgeError(Exception):
    
        def __init__(self, age):
            self.__age = age
    
        # 重写str方法
        def __str__(self):
            return "您传入的年龄不满足需求:age=%d" % self.__age
    
    age =10
    try:
        raise AgeError(age)
    except Exception as e:
        print(e)
    
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udglPlq2-1659251982048)(image/image_qBvcHgZtad.png)]

    traceback.print_exc()实现 通过 系统角度 打印后继续执行

    这样捕捉到异常后程序还会继续往后执行,如果不捕捉的话,那么抛出该运行时异常程序则会中断

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09J85RtE-1659251982049)(image/image_km5bLc6iB3.png)]

    注:实体类中 要有__enter__ __exit__函数,分别 负责初始化以及清理工作

  • if else 异常模式

    try:
    <语句>        #运行别的代码
    except <名字><语句>        #如果在try部份引发了'name'异常
    except <名字><数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
    else:
    <语句>        #如果没有异常发生
    
  • 多异常处理

    ...
    except(ZeroDivisionError, TypeError, NameError):
    ...
    
  • try-finally 语句

    任何情况下都会执行finall中的语句

    try:
    <语句>
    finally:
    <语句>    #退出try时总会执行
    raise
    
  • with as取代try-finally

    • 要求

      with所求值的对象必须有一个__enter__()方法,一个__exit__()方法

    with 实体类 as 返回值
      方法或函数体
    
    class Sample:
        def __enter__(self):
            print("In __enter__()")
        def __exit__(self, type, value, trace):
            print("In __exit__()")
    S=Sample()
    with S as sample:
        raise Exception("错误出现")
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5OrHDXLm-1659251982049)(image/image_sbfuWClWsq.png)]

4 异常跟踪

try:
    c = 1 / 0
except Exception as e:
    #收集出现的错误
    info = sys.exc_info()
    #跟踪该错误信息,limit参数为打印跟踪的条目
    traceback.print_tb(info[2])
    print(info)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nm04RxLx-1659251982050)(image/image_-blQV9BUQg.png)]

补充一下 日志打印 用 log

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想new的出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值