Python:try except 异常处理整理
目录
一、try except异常处理的语句格式
二、获取相关异常信息
(1)sys.exec_info()
三、traceback模块的常用方式
(1)traceback.print_tb(tb, limit=None, file=None) 打印指定堆栈异常信息
(2)traceback.print_exception(exc, /, [value, tb, ]limit=None, file=None, chain=True) 和 traceback.print_exc(limit=None, file=None, chain=True) 打印指定堆栈异常信息
(3)traceback.format_list(extracted_list) 和 traceback.format_exception(exc, /, [value, tb, ]limit=None, chain=True) 返回可打印的错误信息字符串列表
(4)和 traceback.format_exc(limit=None, chain=True) 返回错误信息字符串
一、try except异常处理的语句格式
try:可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:处理异常的代码块2
except [Exception]:处理其它异常
finally:最后做其他事情,finally必定执行
二、获取相关异常信息
(1)sys.exec_info()
sys.exc_info() 该函数会返回一个元组(type(e), e, e.__traceback__)。
该元组记录错误类型、错误信息、错误信息所在堆栈。如果没有异常发生,则会返回一个空的元组
示例:
import sys
import tracebackdef func(a: int, b: int):return a // bdef func1(a: int, b: int):try:return func(a, b)except Exception as e:errType, errInfo, errTraceBack = sys.exc_info()print(errType) # <class 'ZeroDivisionError'>print(errInfo) # integer division or modulo by zeroprint(errTraceBack) # <traceback object at 0x000001FEF8C7BB80>if __name__ == "__main__":func1(1, 0)
三、traceback模块的常用方式
相关官方文档:traceback —— 打印或读取堆栈的跟踪信息 — Python 3.11.2 文档
(1)traceback.print_tb(tb, limit=None, file=None) 打印指定堆栈异常信息
- traceback.print_tb(tb, limit=None, file=None) 其中tb指的是从sys.exc_info()获取的traceback堆栈类型,limit指的是报告错误的堆栈层数,file指的是输出到哪个文件流中,默认为stderr
import sys
import tracebackdef func(a: int, b: int):return a // bdef func1(a: int, b: int):try:return func(a, b)except Exception as e:errType, errInfo, errTraceBack = sys.exc_info()traceback.print_tb(errTraceBack)
'''File "d:\Python WorkSpace\GameAssist\test2.py", line 10, in func1return func(a, b)File "d:\Python WorkSpace\GameAssist\test2.py", line 6, in funcreturn a // b
'''if __name__ == "__main__":func1(1, 0)
(2)traceback.print_exception(exc, /, [value, tb, ]limit=None, file=None, chain=True) 和 traceback.print_exc(limit=None, file=None, chain=True) 打印指定堆栈异常信息
- traceback.print_exception(exc, /, [value, tb, ]limit=None, file=None, chain=True) 打印回溯对象 tb 到 file 的异常信息和整个堆栈回溯。
- traceback.print_exc(limit=None, file=None, chain=True) 相当于
print_exception(*sys.exc_info(), limit, file, chain)
的简写
import sys
import tracebackdef func(a: int, b: int):return a // bdef func1(a: int, b: int):try:return func(a, b)except Exception as e:traceback.print_exception(e)traceback.print_exception(e, file=open("./ErrorLog.txt", "a+"))
'''
Traceback (most recent call last):File "d:\Python WorkSpace\GameAssist\test2.py", line 9, in func1return func(a, b)File "d:\Python WorkSpace\GameAssist\test2.py", line 5, in funcreturn a // b
ZeroDivisionError: integer division or modulo by zero
'''
if __name__ == "__main__":func1(1, 0)
(3)traceback.format_list(extracted_list) 和 traceback.format_exception(exc, /, [value, tb, ]limit=None, chain=True) 返回可打印的错误信息字符串列表
- traceback.format_list(extracted_list)给定一个由元组或如 extract_tb() 或 extract_stack() 所返回的 FrameSummary 对象组成的列表,返回一个可打印的字符串列表
import sys
import tracebackdef func(a: int, b: int):return a // bdef func1(a: int, b: int):try:return func(a, b)except Exception as e:errType, errInfo, errTraceBack = sys.exc_info()print(traceback.format_list(traceback.extract_tb(errTraceBack)))
'''
[' File "d:\\Python WorkSpace\\GameAssist\\test2.py", line 9, in func1\n return func(a, b)\n', ' File "d:\\Python WorkSpace\\GameAssist\\test2.py", line 5, in func\n return a // b\n']
'''if __name__ == "__main__":func1(1, 0)
- traceback.format_exception(exc, /, [value, tb, ]limit=None, chain=True) 格式化一个栈跟踪和异常信息。 参数的含义与传给 print_exception() 的相应参数相同。 返回值是一个字符串列表,每个字符串都以一个换行符结束且有些还包含内部换行符。
import sys
import tracebackdef func(a: int, b: int):return a // bdef func1(a: int, b: int):try:return func(a, b)except Exception as e:print(traceback.format_exception(e))'''
['Traceback (most recent call last):\n', ' File "d:\\Python WorkSpace\\GameAssist\\test2.py", line 9, in func1\n return func(a, b)\n', ' File "d:\\Python WorkSpace\\GameAssist\\test2.py", line 5, in func\n return a // b\n', 'ZeroDivisionError: integer division or modulo by zero\n']
'''if __name__ == "__main__":func1(1, 0)
(4)和 traceback.format_exc(limit=None, chain=True) 返回错误信息字符串
- traceback.format_exc(limit=None, chain=True) 这类似于
print_exc(limit)
但会返回一个字符串而不是打印到一个文件
import sys
import tracebackdef func(a: int, b: int):return a // bdef func1(a: int, b: int):try:return func(a, b)except Exception as e:print(traceback.format_exc())'''
Traceback (most recent call last):File "d:\Python WorkSpace\GameAssist\test2.py", line 9, in func1return func(a, b)File "d:\Python WorkSpace\GameAssist\test2.py", line 5, in funcreturn a // b
ZeroDivisionError: integer division or modulo by zero
'''if __name__ == "__main__":func1(1, 0)
相关文章:

Python:try except 异常处理整理
目录 一、try except异常处理的语句格式 二、获取相关异常信息 (1)sys.exec_info() 三、traceback模块的常用方式 (1)traceback.print_tb(tb, limitNone, fileNone) 打印指定堆栈异常信息 (2)tracebac…...
Redis Lua脚本的详细介绍以及使用入门
Redis Lua脚本的详细介绍以及使用入门。 文章目录Redis Lua脚本的引入开源软件的可扩展性Redis的扩展性脚本Redis Lua脚本的基本使用通过EVAL命令执行Lua脚本通过脚本与Redis交互Java中调用Redis Lua脚本Java调用Lua脚本的方式Redis Lua脚本的使用建议脚本缓存脚本缓存稳定性脚…...

synchronized和ReentrantLock有什么区别呢?
第15讲 | synchronized和ReentrantLock有什么区别呢? 从今天开始,我们将进入 Java 并发学习阶段。软件并发已经成为现代软件开发的基础能力,而 Java 精心设计的高效并发机制,正是构建大规模应用的基础之一,所以考察并发…...

SVHN数据集下载及使用方法
街景门牌号数据集(SVHN),这是一个现实世界数据集,用于开发目标检测算法。它需要最少的数据预处理过程。它与 MNIST 数据集有些类似,但是有着更多的标注数据(超过 600,000 张图像)。这些数据是从…...

产业安全公开课:2023年DDoS攻击趋势研判与企业防护新思路
2023年,全球数字化正在加速发展,网络安全是数字化发展的重要保障。与此同时,网络威胁日益加剧。其中,DDoS攻击作为网络安全的主要威胁之一,呈现出连年增长的态势,给企业业务稳定带来巨大挑战。2月21日&…...

Docker 容器命令 和安装各种镜像环境
CentOS安装Docker 1.1.卸载(可选) 如果之前安装过旧版本的Docker,可以使用下面命令卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotat…...

【数据结构】顺序表的深度剖析
🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 🚀数据结构专栏ÿ…...

当面试官问“你的SQL能力怎么样”时,怎么回答才不会掉进应聘陷阱?
在某平台看到一个比较实际的问题,在这里分享给职场新人。 SQL已经是职场最常用的一种编程语言,所以应聘技术或非技术岗位,都可能会被问道一个问题:你的SQL能力怎么样? 对于职场新人来说(SQL高手可以无视下…...

AI作画—中国画之山水画
山水画,简称“山水”,中国画的一种,描写山川自然景色为主体的绘画。山水画在我国绘画史中占有重要的地位。 山水画形成于魏晋南北朝时期,但尚未从人物画中完全分离。隋唐时始终独立,五代、北宋时趋于成熟,…...

Java:Java与Python — 编码大战
Java和Python是目前市场上最热门的两种编程语言,因为它们具有通用性、高效性和自动化能力。两种语言都有各自的优点和缺点,但主要区别在于Java 是静态类型的,Python是动态类型的。它们有相似之处,因为它们都采用了“一切都是对象”…...
山东专精特新各地市扶持政策
青岛市奖励政策:新认定为市隐形、省“专精特新”及省瞪羚、角兽的我市企业,分别给予50万元、30万元、50万元、300万元的一次性奖励。奖励金额:省级30万济南市奖励政策:对被认定的国家专精特新 “小巨人”企业一次性给予200万元奖励…...

持续事务管理过程中的事件驱动
比较官方的定义:事件驱动是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。在计算机编程、公共…...

【手把手一起学习】(三) Altium Designer 20 原理图库添加元件
1 添加元件 元件符号是元件在原理图上的表现形式,主要由边框、管脚、名称等组成,原理图库中的元件管脚(顺序,间距等)与电子元件实物的引脚严格对应,绘制原理图库时,一定参考元件规格书和芯片数据手册中的说明…...
设计模式-行为型模式:观察者模式
目录 1、简介 2、组成部分 3、优缺点 4、使用场景 5、代码实现 1、简介 观察者模式是一种软件设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,当主题对象发生变化时,所有的观察者对象都会得到…...

Springboot 为了偷懒,我封装了一个自适配的数据单位转换工具类
前言 平时做一些统计数据,经常从数据库或者是从接口获取出来的数据,单位是跟业务需求不一致的。 比如, 我们拿出来的 分, 实际上要是元 又比如,我们拿到的数据需要 乘以100 返回给前端做 百分比展示 又比如ÿ…...

正则表达式
当我们需要对字符串进行判断的时候,使用正则表达式能大大提高编程效率。比如,当我们需要找出所有“像邮箱”的字符串(包含"" "." ".com",且顺序一致),我们需要一个某种模式的…...

java进阶Map 集合
通过之前的学习我们知道Map是一个双列集合,就是以键值对的形式进行数据存储 java进阶—集合 Map 下面有 三个子接口,HashMap , HashTable 以及 TreeMap 提醒一点:Map不是Collection下的集合,Collection是单列集合&am…...

Java 方法超详细整理,适合新手入门
目录 一、什么是方法呢? 二、方法的优点 三、带返回值方法定义 语法: 示例: 四、带返回值方法调用 语法: 示例: 五、结果示例 一、什么是方法呢? Java方法是语句的集合,它们在一起执行…...

软考学习笔记(题目知识记录)
答案为 概要设计阶段 本题涉及软件工程的概念 软件工程的任务是基于需求分析的结果建立各种设计模型,给出问题的解决方案 软件设计可以分为两个阶段: 概要设计阶段和详细设计阶段 结构化设计方法中,概要设计阶段进行软件体系结构的设计&…...

2021.3.3idea创建Maven项目
首先new - project - 找到Maven 然后按下图操作:先勾选使用骨架,再找到Maven-archetype-webapp,选中,然后next填写自己想要创建的项目名,然后选择自己的工作空间①、选择自己下载的Maven插件②、选择选择Maven里的sett…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...