前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python异常处理

python异常处理

作者头像
不止于python
发布2023-09-05 14:20:47
发布2023-09-05 14:20:47
17800
代码可运行
举报
文章被收录于专栏:不止于python不止于python
运行总次数:0
代码可运行

哈哈哈

作为一个码农, 每天都在写代码, 不可避免的会出现错误, 也有一些时候, 知道可能会出现错误, 必须要在代码中处理, 以免影响代码正常流程, 这篇讲一下常见的异常错误, 以及如何处理异常

常见异常

  • AssertError: 断言语句(assert)失败
  • AttributeError: 尝试访问未知的对象属性
  • EOFError: 用户输入文件末尾标志EOF(Ctrl+d)
  • FloatingPointError: 浮点计算错误
  • GeneratorExit: generator.close()方法被调用的时候
  • ImportError: 导入模块失败的时候
  • IndexError: 索引超出序列的范围
  • KeyError: 字典中查找一个不存在的关键字
  • KeyboardInterrupt: 用户输入中断键(Ctrl+c)
  • MemoryError: 内存溢出(可通过删除对象释放内存)
  • NameError: 尝试访问一个不存在的变量
  • NotImplementedError: 尚未实现的方法
  • OSError: 操作系统产生的异常(例如打开一个不存在的文件)
  • OverflowError: 数值运算超出最大限制
  • ReferenceError: 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
  • RuntimeError: 一般运行时的错误
  • StopIteration: 迭代器没有更多的值
  • SyntaxError: 语法错误
  • IndentationError: 缩进错误
  • TabError: Tab和空格混合使用
  • SystemError: Python编译器系统错误
  • SystemExit: Python编译器进程被关闭
  • TypeError: 不同类型间的无效操作
  • UnboundLocalError: 访问一个未初始化的本地变量(NameError的子类)
  • UnicodeError: Unicode相关的错误(ValueError的子类)
  • UnicodeEncodeError: Unicode编码时的错误(UnicodeError的子类)
  • UnicodeDecodeError: Unicode解码时的错误(UnicodeError的子类)
  • UnicodeTranslateError: Unicode转换时的错误(UnicodeError的子类)
  • ValueError: 传入无效的参数
  • ZeroDivisionError: 除数为零

异常处理

格式:

代码语言:javascript
代码运行次数:0
运行
复制
try:
    # 代码块, 没有异常正常完成

except 异常类型1:
    # try代码块捕捉到异常类型1, 自定义处理后续流程

except 异常类型2 as e2:
    # try代码块捕捉到异常类型1, 自定义处理后续流程
    # 将异常赋值给e2

except (异常类型3, 异常类型4...)
    # try代码块捕捉到异常类型3或4, 自定义处理后续流程

excpet Exception:
    # 尝试捕捉任何错误, 自定义处理后续流程

else:
    # try代码块中, 如果没有出现任何异常,将会执行此处代码

finally:
    # 任何情况都会执行的代码块, 无论有没有报错

多说无用, 写个小例子

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date: 2023-08-06 21:01:36
# @Last Modified by: Mehaei
# @Last Modified time: 2023-08-06 21:36:51

# 自定义的异常类
class UnknownError(Exception):
    pass


# 小例子
try:
    raise UnknownError
    print(1/0)
except ZeroDivisionError:
    print("除数为0, 请检查代码")
except UnknownError:
    print("自定义的异常, 不知道什么错误")
# 使用as语句, 将错误赋值给变量e
except Exception as e:
    print(f"不知道什么错误: {e}")
else:
    print("代码块没有异常")
finally:
    print("不管有没有异常, 我都会执行")

输出:

代码语言:javascript
代码运行次数:0
运行
复制
自定义的异常, 不知道什么错误
不管有没有异常, 我都会执行
[Finished in 0.1s]

这篇完了

代码异常处理还有个典型的应用就是给代码块加个装饰器, 用来重试代码块或函数, 下篇讲装饰器

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档