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 除数或模数为零。
相关推荐
Jackson_GJH几秒前
日志_图解spdlog
开发语言·c++
卷无止境4 分钟前
AI编程时代,代码复杂性正在悄悄失控
后端·python
开源量化GO11 分钟前
看到“2026年 Python 与 API”时,用示例和拆解看清关系
人工智能·python
高洁0116 分钟前
大模型是怎么“学会“的:预训练、微调、对齐三段论
python·深度学习·transformer·知识图谱·tornado
529宝宝起名网19 分钟前
用 Python 开发名字五行八字匹配工具:从八字排盘到喜用神起名的全流程实现
python
CodeStats28 分钟前
【Java类加载器】Java 类加载器完整体系深度拆解(下):自定义加载器实战与 SPI 破坏双亲委派(MySQL 驱动揭秘)
java·开发语言·jvm·classloader·双亲委派
砚底藏山河39 分钟前
并发与限频工程:把20只的2秒压到0.5秒不封号(魔码量化实战 #03)
java·开发语言·数据库·python·金融
论文复现现场1 小时前
本地 PyTorch 训练 OOM,第一次租 RTX 4090 云 GPU 怎么迁移项目?从环境检查到 100 Step 跑通
人工智能·pytorch·python·深度学习·cuda
云雀衔光1 小时前
MCP 协议全景:为什么它是 AI 连接工具的「USB-C」
java·开发语言·数据库·人工智能·ai编程
geovindu1 小时前
go: Task Scheduler
开发语言·后端·golang