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 除数或模数为零。
相关推荐
Lumbrologist2 分钟前
【C++】零基础入门 · 第 1 节:第一个程序 Hello World 与编译运行
开发语言·c++
超梦dasgg20 分钟前
Java 生产环境 MQ 技术选型全解析
java·开发语言·java-rocketmq·java-rabbitmq
桀人1 小时前
C++——模板初阶(收录在专栏C++入门到精通)
开发语言·c++
一直有一个ac的梦想1 小时前
cmu15445 2025fall lec 18 transactions with two-phase lock
java·开发语言·数据库
毋语天1 小时前
FastAPI 进阶实战:请求体、文件上传、响应模型与数据校验
python·fastapi·api开发·数据校验·pydantic
JAVA社区1 小时前
Java进阶全套教程(四)—— SpringMVC框架详解
java·开发语言·spring·面试·职场和发展
Lumbrologist1 小时前
【C++】零基础入门 · 第 2 节:变量、基本数据类型与输入输出
java·开发语言·c++
码完就睡2 小时前
C语言——动态内存
c语言·开发语言
xyq20242 小时前
Java 数组
开发语言