当前位置: 首页 > news >正文

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(tblimit=Nonefile=None) 打印指定堆栈异常信息

  • traceback.print_tb(tblimit=Nonefile=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/, [valuetb, ]limit=Nonefile=Nonechain=True) 和 traceback.print_exc(limit=Nonefile=Nonechain=True) 打印指定堆栈异常信息

  • traceback.print_exception(exc/, [valuetb, ]limit=Nonefile=Nonechain=True) 打印回溯对象 tb 到 file 的异常信息和整个堆栈回溯。
  • traceback.print_exc(limit=Nonefile=Nonechain=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/, [valuetb, ]limit=Nonechain=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/, [valuetb, ]limit=Nonechain=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=Nonechain=True)  返回错误信息字符串

  • traceback.format_exc(limit=Nonechain=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异常处理的语句格式 二、获取相关异常信息 &#xff08;1&#xff09;sys.exec_info() 三、traceback模块的常用方式 &#xff08;1&#xff09;traceback.print_tb(tb, limitNone, fileNone) 打印指定堆栈异常信息 &#xff08;2&#xff09;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有什么区别呢&#xff1f; 从今天开始&#xff0c;我们将进入 Java 并发学习阶段。软件并发已经成为现代软件开发的基础能力&#xff0c;而 Java 精心设计的高效并发机制&#xff0c;正是构建大规模应用的基础之一&#xff0c;所以考察并发…...

SVHN数据集下载及使用方法

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

产业安全公开课:2023年DDoS攻击趋势研判与企业防护新思路

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

Docker 容器命令 和安装各种镜像环境

CentOS安装Docker 1.1.卸载&#xff08;可选&#xff09; 如果之前安装过旧版本的Docker&#xff0c;可以使用下面命令卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotat…...

【数据结构】顺序表的深度剖析

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;别人可以拷贝我的模式&#xff0c;但不能拷贝我不断往前的激情 &#x1f6f8;C语言专栏&#xff1a;https://blog.csdn.net/vhhhbb/category_12174730.html &#x1f680;数据结构专栏&#xff…...

当面试官问“你的SQL能力怎么样”时,怎么回答才不会掉进应聘陷阱?

在某平台看到一个比较实际的问题&#xff0c;在这里分享给职场新人。 SQL已经是职场最常用的一种编程语言&#xff0c;所以应聘技术或非技术岗位&#xff0c;都可能会被问道一个问题&#xff1a;你的SQL能力怎么样&#xff1f; 对于职场新人来说&#xff08;SQL高手可以无视下…...

AI作画—中国画之山水画

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

Java:Java与Python — 编码大战

Java和Python是目前市场上最热门的两种编程语言&#xff0c;因为它们具有通用性、高效性和自动化能力。两种语言都有各自的优点和缺点&#xff0c;但主要区别在于Java 是静态类型的&#xff0c;Python是动态类型的。它们有相似之处&#xff0c;因为它们都采用了“一切都是对象”…...

山东专精特新各地市扶持政策

青岛市奖励政策&#xff1a;新认定为市隐形、省“专精特新”及省瞪羚、角兽的我市企业&#xff0c;分别给予50万元、30万元、50万元、300万元的一次性奖励。奖励金额&#xff1a;省级30万济南市奖励政策&#xff1a;对被认定的国家专精特新 “小巨人”企业一次性给予200万元奖励…...

持续事务管理过程中的事件驱动

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

【手把手一起学习】(三) Altium Designer 20 原理图库添加元件

1 添加元件 元件符号是元件在原理图上的表现形式&#xff0c;主要由边框、管脚、名称等组成&#xff0c;原理图库中的元件管脚(顺序&#xff0c;间距等)与电子元件实物的引脚严格对应&#xff0c;绘制原理图库时&#xff0c;一定参考元件规格书和芯片数据手册中的说明&#xf…...

设计模式-行为型模式:观察者模式

目录 1、简介 2、组成部分 3、优缺点 4、使用场景 5、代码实现 1、简介 观察者模式是一种软件设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听一个主题对象&#xff0c;当主题对象发生变化时&#xff0c;所有的观察者对象都会得到…...

Springboot 为了偷懒,我封装了一个自适配的数据单位转换工具类

前言 平时做一些统计数据&#xff0c;经常从数据库或者是从接口获取出来的数据&#xff0c;单位是跟业务需求不一致的。 比如&#xff0c; 我们拿出来的 分&#xff0c; 实际上要是元 又比如&#xff0c;我们拿到的数据需要 乘以100 返回给前端做 百分比展示 又比如&#xff…...

正则表达式

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

java进阶Map 集合

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

Java 方法超详细整理,适合新手入门

目录 一、什么是方法呢&#xff1f; 二、方法的优点 三、带返回值方法定义 语法&#xff1a; 示例&#xff1a; 四、带返回值方法调用 语法&#xff1a; 示例&#xff1a; 五、结果示例 一、什么是方法呢&#xff1f; Java方法是语句的集合&#xff0c;它们在一起执行…...

软考学习笔记(题目知识记录)

答案为 概要设计阶段 本题涉及软件工程的概念 软件工程的任务是基于需求分析的结果建立各种设计模型&#xff0c;给出问题的解决方案 软件设计可以分为两个阶段&#xff1a; 概要设计阶段和详细设计阶段 结构化设计方法中&#xff0c;概要设计阶段进行软件体系结构的设计&…...

2021.3.3idea创建Maven项目

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

基于S7-200 PLC和组态王矿井通风控制

基于S7-200 PLC和组态王矿井通风控制矿井通风系统的自动化控制对安全生产太重要了。老张上次下井巡检时说&#xff1a;"现在这通风系统比二十年前强多了&#xff0c;以前手动调风门得拿命赌操作工的手速。"今天咱们就聊聊怎么用S7-200 PLC和组态王搞矿井通风控制&…...

PyTorch3D在Windows上安装总报错?试试这个绕过源码编译的Pip直装方案(适配PyTorch 2.0.1 + CUDA 11.7)

PyTorch3D在Windows上安装总报错&#xff1f;试试这个绕过源码编译的Pip直装方案&#xff08;适配PyTorch 2.0.1 CUDA 11.7&#xff09; 如果你是一名在Windows平台上进行3D视觉研究的开发者&#xff0c;想必对PyTorch3D这个强大的3D深度学习库并不陌生。然而&#xff0c;官方…...

Python MCP服务器开发面试必考题全解析:从协议设计到并发压测,97%候选人栽在这3个盲区

第一章&#xff1a;Python MCP服务器开发面试全景概览Python MCP&#xff08;Model-Controller-Protocol&#xff09;服务器并非标准框架术语&#xff0c;而是近年来在微服务与协议网关场景中逐渐形成的工程实践模式——强调以协议适配为核心、模型驱动行为、控制器协调生命周期…...

MySQL数据库(基础语法篇

MySQL数据库(基础语法篇 这份文档详细梳理了MySQL数据库的核心语法体系&#xff0c;涵盖了从基础的数据定义、操纵、查询&#xff0c;到进阶的多表连接、视图、存储过程以及最佳实践。 一、MySQL优势 MySQL作为世界上最流行的开源数据库之一&#xff0c;具有诸多显著特点与优势…...

AI Agent Harness Engineering 重塑企业运营:从概念到落地的完整路径

AI Agent Harness Engineering 重塑企业运营:从概念到落地的完整路径 一、引言 钩子 你是否曾在企业运营中遇到过这样的场景:市场数据瞬息万变,决策团队却需要花费数周时间收集、分析信息才能做出响应;客户服务部门每天处理大量重复咨询,却仍有大量积压工单;供应链管理…...

JetBrains GoLand 2026.1 (macOS, Linux, Windows) - 为 Go 开发者打造的完整 IDE

JetBrains GoLand 2026.1 (macOS, Linux, Windows) - 为 Go 开发者打造的完整 IDE JetBrains 跨平台开发者工具 请访问原文链接&#xff1a;https://sysin.org/blog/jetbrains-goland/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Jet…...

保姆级教程:手把手教你用Dify 0.6.0源码搭建自己的AI工作流引擎(附避坑指南)

从零构建AI工作流引擎&#xff1a;Dify 0.6.0源码实战指南 当你第一次打开Dify的源码仓库&#xff0c;可能会被那些复杂的目录结构和抽象类搞得一头雾水。别担心&#xff0c;三周前我也和你一样&#xff0c;直到我亲手将这套系统跑起来并修改了第一个工作流节点。本文将带你用最…...

前端骨架搭建

一、安装UI与功能库在终端运行以下命令npm install arco-design/web-vuenpm install lucide-vue-nextnpm install md-editor-v3npm install pinia axios分别安装预计项目所需的UI库、图标库、编辑器、状态管理功能。检查node版本&#xff0c;发现其为过时的v16版本&#xff0c;…...

Ostrakon-VL-8B完整指南:支持中文/英文双语输入的零售多模态问答实践

Ostrakon-VL-8B完整指南&#xff1a;支持中文/英文双语输入的零售多模态问答实践 1. 引言&#xff1a;当AI走进零售店&#xff0c;它能看懂什么&#xff1f; 想象一下&#xff0c;你是一家连锁超市的运营经理。每天&#xff0c;你需要检查数百张货架照片&#xff0c;看看商品…...

【Netty】【调试工具】----Windows上网络调试助手NetAssist的使用(Java 开发者实用指南)

NetAssist是Windows下轻量免装的TCP/UDP调试工具&#xff0c;对Java开发者核心价值是快速模拟网络对端、裸抓报文、联调硬件/第三方接口&#xff0c;大幅降低网络编程调试成本。一、Java开发者用它的核心用处 网络编程快速验证 不用写完整客户端/服务端&#xff0c;用NetAssist…...