Python 代码的异常处理和打印异常信息
时间:2020-04-17
本文章向大家介绍Python 代码的异常处理和打印异常信息,主要包括Python 代码的异常处理和打印异常信息使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
1、Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类。自定义异常都是从基类Exception中继承。Python自动将所有内建的异常放到内建命名空间中,所以程序不必导入exceptions模块即可使用异常。
2、需要查看详细的错误信息需导入import traceback
模块
捕获异常的方式
方法一:捕获所有的异常
try:
1/0
except Exception:
print (Exception)
"""输出异常类<class 'Exception'>"""
方法二:采用traceback模块查看异常,需要导入traceback模块,这个方法会打印出异常代码的行号
try:
1/0
except:
traceback.print_exc()
"""输出:
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/demo04.py", line 123, in <module>
1/0
ZeroDivisionError: division by zero
"""
方法三:采用sys模块回溯最后的异常
try:
1/0
except:
info = sys.exc_info()
print(info)
print(info[0])
print(info[1])
"""输出
(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x000001D3E9FF62C8>)
<class 'ZeroDivisionError'>
division by zero
"""
获取函数名和行号
上面介绍的方法二回打印出问题代码的行号,还有一些方法可以获取函数名和行号
import sys
def get_cur_info():
"""Return the frame object for the caller's stack frame."""
try:
raise Exception
except:
f = sys.exc_info()[2].tb_frame.f_back
return (f.f_code.co_name, f.f_lineno)
def callfunc():
print(get_cur_info())
if __name__ == '__main__':
callfunc()
"""输出:
('callfunc', 131)
"""
import sys
def get_cur_info():
# 获取当前函数名
print(sys._getframe().f_code.co_name)
# 获取调用函数名(A调用B函数,获取A的函数名)
print(sys._getframe().f_back.f_code.co_name)
get_cur_info()
"""输出:
get_cur_info
<module>
"""
原文地址:https://www.cnblogs.com/se7enjean/p/12720197.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 这是我见过最牛逼的Shell,619行代码!
- 设计模式(五):利用原型模式复制几个葫芦娃
- Vue中数组变动监听
- which命令
- 如何将tensorflow1.x代码改写为pytorch代码(以图注意力网络(GAT)为例)
- tomcat设置好环境变量,依然无法通过cmd startup命令启动
- python调用百度图片识别api
- [Go]GO语言实战-开源WEB客服GO-FLY-gorm下分页的实现
- [Go]GO语言实战-小程序或公众号接口gin框架验证微信服务器消息签名-开源WEB客服
- php一步一步实现mysql协议(一)——抓包本地mysql通信
- [MySQL] 利用explain查看sql语句中使用的哪个索引
- php一步一步实现mysql协议(二) ——握手初始化
- php一步一步实现mysql协议(三) ——登录认证密码加密
- php一步一步实现mysql协议(四)——执行命令
- EdgeX foundry树莓派搭建与MQTT通讯