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 除数或模数为零。
相关推荐
观书喜夜长2 小时前
大模型应用开发学习-基于 LangChain 框架实现的交互式问答脚本
python·学习
章鱼丸-2 小时前
DAY32 官方文档的阅读
python
2401_874732532 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
2301_792308252 小时前
C++编译期数学计算
开发语言·c++·算法
于慨2 小时前
docker
python
兑生2 小时前
【灵神题单·贪心】3745. 三元素表达式的最大值 | 排序贪心 | Java
java·开发语言
GinoWi2 小时前
Chapter 7 Python中的函数
python
sqyno1sky2 小时前
C++中的契约编程
开发语言·c++·算法
m0_518019482 小时前
使用Seaborn绘制统计图形:更美更简单
jvm·数据库·python