python中的异常处理

文章目录

python中是
try except相当于java的 try catch

通用结构
python 复制代码
from loguru import logger

try:
    # 可能引发异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 仅当发生 ZeroDivisionError 时执行
    logger.info("不能除以零!")
finally:
    logger.info("finally逻辑执行!")

打印异常有几种方案

1、traceback模块

2、sys模块

3、logging模块,略

4、loguru模块

打印异常-traceback模块

1、用traceback打印

python 复制代码
try:
    # 可能引发异常的代码
    result = 10 / 0
except Exception as e:
    traceback.print_exc()

2、

打印异常-traceback

打印异常-sys模块

python 复制代码
import sys

try:
    result = 10 / 0
except Exception as e:
    # 获取异常三元组(类型、实例、堆栈)
    exc_type, exc_value, exc_tb = sys.exc_info()
    # 打印自定义格式的堆栈
    print(f"异常类型:{exc_type.__name__},描述:{exc_value}")
打印异常-loguru模块
python 复制代码
try:
    result = 10 / 0
except Exception as e:
    logger.error(f"转换失败:{e}")  # 基础打印
    logger.exception("转换失败(带堆栈)")  # 自动附加堆栈

exception()方法自带堆栈,推荐用这个。

异常需要as吗?

可以用as,也可以不用,因为获取异常有多种手段。

raise抛出异常

相当于java的throw。

python 复制代码
try:
    if(1<2):
        raise Exception("计算错误")
except Exception as e:
    logger.exception("出现异常=")  # 自动附加堆栈
pass忽略异常

相当于java的catch块中不做任何处理。

注:无论是在java中还是在python中,都非常不推荐忽略异常,很难排查问题,至少也要加上异常日志。

常见的异常类型

异常类型 描述
Exception 所有内置非系统退出异常的基类(通常捕获这个即可覆盖大部分情况,但不推荐作为首选,除非你需要捕获所有未知错误)。
AttributeError 访问不存在的对象属性。
IOError / OSError 输入/输出操作失败(如文件不存在)。
ImportError 导入模块失败。
IndexError 序列索引超出范围。
KeyError 字典中找不到指定的键。
KeyboardInterrupt 用户中断程序(通常是 Ctrl+C)。
NameError 使用了未定义的变量名。
SyntaxError 代码语法错误(通常在解析阶段,try-except 无法捕获)。
TypeError 操作应用于不适当类型的对象。
ValueError 传入正确的类型但值不合适(如 int("abc"))。
ZeroDivisionError 除数或模数为零。
相关推荐
用户83562907805116 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户83562907805116 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生1 天前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师1 天前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码1 天前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf1 天前
FastAPI 如何连接 MySQL
后端·python
apocelipes2 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780512 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent2 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6252 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python