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 除数或模数为零。
相关推荐
vx_Biye_Design10 分钟前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express
weixin_4173968316 分钟前
桌面云终端PXE启动失败怎么排查?从DHCP Option到镜像下发
开发语言·前端·php·技术·酒店·综合布线·弱电
某不知名網友1 小时前
ROS2进阶:服务通信、自定义SRV接口、参数服务器与基于服务的参数通信详解
java·开发语言·microsoft
java_nnnn1 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
qetfw1 小时前
Bash 字符串处理:参数展开、序列与脚本执行方式
linux·开发语言·chrome·bash
小羊没烦恼!1 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
学Linux的语莫2 小时前
python中类的常见写法
开发语言·python·状态模式
需要8262 小时前
容器化 Java:镜像瘦身与 JVM 容器感知(cgroup)
java·开发语言·jvm
dyxal2 小时前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
譕痕2 小时前
Rabbit 实例
java·开发语言·java-rabbitmq