python获取异常信息exc_info和print_exc

1 python获取异常信息exc_info和print_exc

python通过sys.exc_info获取异常信息,通过traceback.print_exc打印堆栈信息,包括错误类型和错误位置等信息。

1.1 异常不一定是错误

所有错误都是异常,但并非所有异常都是错误。比如,有些异常表示警告(参考warnings模块),有些异常是功能信号(比如,input函数从标准输入流sys.stdin读取输入)。

用法

while True:try:ins=input('请输入:')except EOFError as e:# except 代码块breakelse:print('你输入的是:',ins)

描述

(1) 通过input循环获取用户输入;

(2) 通过EOFError 作为功能信号,触发则退出输入;

(3) 通过Ctrl+D(windows)或Ctrl+Z(Unix)触发EOFError 异常;

示例

>>> import traceback
>>> while True:try:ins=input('请输入:')except EOFError as e:# 通过 Ctrl+D 或 Ctrl+Z 触发 EOFErrorprint('遇到 Ctrl+D 或 Ctrl+Z,退出输入')print(traceback.print_exc())breakelse:print('你输入的是:',ins)请输入:梯阅线条
你输入的是: 梯阅线条
请输入:
遇到 Ctrl+D 或 Ctrl+Z,退出输入
Traceback (most recent call last):File "<pyshell#58>", line 3, in <module>
EOFError: EOF when reading a line
None

1.2 异常条件语句和raise

python自定义异常也可用于触发非错误的情况,根据条件语句触发raise异常。

用法

class FoundByExc(Exception):pass
def search_by_exc(strlist,target):if True:raise FoundByExc("xxx")else:return "xxx"

描述

搜索指定内容时触发异常。

(1) 自定义一个异常类;

(2) 条件成立,触发异常;

示例

>>> class FoundByExc(Exception):pass>>> def search_by_exc(strlist,target):for s in strlist:if s == target:raise FoundByExc("在{}找到'{}'".format(strlist,target))else:return "在{}未找到'{}'".format(strlist,target)>>> def test_searchbyexc(strlist,target):try:sbe=search_by_exc(strlist,target)except FoundByExc as fbe:print(fbe)else:print(sbe)>>> strlist=['梯阅线条','tyxt.work','9555']
>>> target1='梯阅线条';target2='tyxt'
>>> test_searchbyexc(strlist,target1)['梯阅线条', 'tyxt.work', '9555']找到'梯阅线条'
>>> test_searchbyexc(strlist,target2)['梯阅线条', 'tyxt.work', '9555']未找到'tyxt'

1.3 sys.exc_info获取异常信息

python中空的except捕获任何未被捕获的异常,通过sys.exc_info获取捕获的实际异常。

用法

import sys
sys.exc_info()

描述

返回元组(type,value,traceback),

type:捕获的异常类型;

value:捕获的异常类的实例;

traceback:触发异常的调用堆栈;

示例

>>> try:1+[]
except:print(sys.exc_info())(<class 'TypeError'>, TypeError("unsupported operand type(s) for +: 'int' and 'list'"), <traceback object at 0x03EFEE40>)

1.4 traceback.print_exc打印异常堆栈

用法

import traceback
try:# try 代码块
except xxx:# except 代码块traceback.print_exc()

描述

当Python程序发生异常时,通过traceback.print_exc()获取异常的详细信息,包括异常类型、异常值和异常发生的位置信息。

(1) 导入 traceback模块;

(2) 在except处理器,调用traceback.print_exc()方法;

示例

>>> import traceback
>>> try:1+[]
except:traceback.print_exc()Traceback (most recent call last):File "<pyshell#79>", line 2, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux学习笔记】解析Linux系统内核:架构、功能、工作原理和发展趋势

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体&#xff0c;它们互相依赖&#xff0c;不可分割。计算机的硬件&#xff0c;含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…

磁盘相关知识

一、硬盘数据结构 1.扇区&#xff1a; 盘片被分为多个扇形区域&#xff0c;每个扇区存放512字节的数据&#xff08;扇区越多容量越大&#xff09; 存放数据的最小单位 512字节 &#xff08;硬盘最小的存储单位是扇区&#xff0c;512 个字节&#xff0c;八个扇区组成一块&…

FPGA - 231227 - 5CSEMA5F31C6 - 电子万年历

TAG - F P G A 、 5 C S E M A 5 F 31 C 6 、电子万年历、 V e r i l o g FPGA、5CSEMA5F31C6、电子万年历、Verilog FPGA、5CSEMA5F31C6、电子万年历、Verilog 顶层模块 module TOP(input CLK,RST,inA,inB,inC,switch_alarm,output led,beep_led,output [41:0] dp );// 按键…

听GPT 讲Rust源代码--src/tools(29)

File: rust/src/tools/clippy/clippy_lints/src/unused_peekable.rs 在Rust源代码中&#xff0c;rust/src/tools/clippy/clippy_lints/src/unused_peekable.rs这个文件是Clippy工具中一个特定的Lint规则的实现文件&#xff0c;用于检测未使用的Peekable迭代器。 Peekable迭代器…

JavaScript中alert、confrim、prompt的使用及区别【精选】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JavaScript中alert、confrim、prompt的区别及使用以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任…

每日一题:LeetCode-LCR 179. 查找总价格为目标值的两个商品

每日一题系列&#xff08;day 16&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

大厂前端面试题总结(百度、字节跳动、腾讯、小米.....),附上热乎面试经验!

先简单介绍下自己&#xff0c;我“平平无奇小天才”一枚&#xff0c;毕业于南方普通985普通学生&#xff0c;有幸去百度、字节面试&#xff0c;感觉大公司就是不一样&#xff0c;印象最深的是字节&#xff0c;所以有必要总结一下面试经验&#xff0c;以及面试中遇到的一些问题&…

八股文打卡day13——计算机网络(13)

面试题&#xff1a;DNS是什么&#xff1f;DNS的查询过程是什么&#xff1f; 我的回答&#xff1a; 我来讲一下我对DNS的理解 DNS是域名系统&#xff0c;它是一个域名和IP地址相互映射的数据库。通过DNS&#xff0c;可以将我们浏览器中输入的域名&#xff0c;例如&#xff1a;…

c++:new和delete的运算符重载

目录 前提 new 问题&#xff1a; 结论&#xff1a; 解析&#xff1a; delete 问题&#xff1a; 结论&#xff1a; 解析&#xff1a; 前提 class Data { public:Data(){cout<<__FUNCTION__<<endl;}~Data(){cout<<__FUNCTION__<<endl;} private…

腾讯云服务器和轻量服务器选哪个好(各自的优势区别)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

Rust安装(Windows)

安装Rust 进入Rust官网&#xff0c;下载Rustup&#xff08;Rust安装器和版本管理工具&#xff09; 下载rustup-init.exe后双击运行&#xff0c;进入以下界面&#xff1a; 1&#xff09;通过 visual studio community 安装程序快速安装 2&#xff09;手动安装必备组件 3&#x…

系统和应用的分布式实时性能和健康监控,对系统中实时发生的所有事情的全面检测,开箱即用、零配置、零依赖,高度互动的 Web 仪表板中查看结果

系统和应用的分布式实时性能和健康监控,对系统中实时发生的所有事情的全面检测,开箱即用、零配置、零依赖,高度互动的 Web 仪表板中查看结果。 NetData 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互…

AWS SSM中切换AWS不同的profile

问题 在自己的开发笔记本上面&#xff0c;通过AWS SSM方式访问EC2服务&#xff0c;只需要通过简单的命令就可以访问EC2了&#xff0c;如下&#xff1a; aws ssm start-session --target i-xxxx12350这个命令就是利用aws命令行工具中ssm提供的会话管理能力访问ec2服务&#xf…

剑指 Offer(第2版)面试题 58:翻转字符串

剑指 Offer&#xff08;第2版&#xff09;面试题 58&#xff1a;翻转字符串 剑指 Offer&#xff08;第2版&#xff09;面试题 58&#xff1a;翻转字符串题目一&#xff1a;翻转单词顺序思路 1&#xff1a;stringstream思路 2&#xff1a;双指针 题目二&#xff1a;左旋转字符串…

YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点

一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络&#xff0c;其是今年最新推出的主干网络&#xff0c;VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单&#xff0c;层数较少&#xff0c;避免了像深度架构和自注意力这样的复杂操作(需要注意的是…

【每日试题】java面试之springboot框架

Spring Boot是基于Spring框架的一种快速开发脚手架。它简化了Spring应用的初始搭建和配置过程&#xff0c;使开发人员能够更加专注于业务逻辑的实现。 Spring Boot的特点有以下几点&#xff1a; 简化配置&#xff1a;Spring Boot的核心设计理念是约定大于配置。它通过自动配置…

HTML使用JavaScript的三种方式

要使用 JavaScript&#xff0c;你可以在 HTML 文件中的 <script> 标签中编写代码&#xff0c;或者将代码保存到一个单独的 .js 文件中并在 HTML 文件中引入。以下是一些常用的 JavaScript 使用方式&#xff1a; 内联 JavaScript&#xff1a;在 HTML 文件的 <script&g…

Erlang、RabbitMQ下载与安装教程(windows超详细)

目录 安装Erlang 1.首先安装RabbitMQ需要安装Erlang环境 2.点击下载好的.exe文件进行傻瓜式安装,一直next即可 3.配置Erlang环境变量 安装RabbitMQ 1.给出RabbitMQ官网下载址&#xff1a;Installing on Windows — RabbitMQ&#xff0c;找到 2.配置RabbitMQ环境变量&#xff0…

SparkStreaming与Kafka整合

1.3 SparkStreaming与Kafka整合 1.3.1 整合简述 kafka是做消息的缓存&#xff0c;数据和业务隔离操作的消息队列&#xff0c;而sparkstreaming是一款准实时流式计算框架&#xff0c;所以二者的整合&#xff0c;是大势所趋。 ​ 二者的整合&#xff0c;有主要的两大版本。 kaf…

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…