python try except返回异常的信息字符串代码实例


Posted in Python onAugust 15, 2019

问题

https://docs.python.org/3/tutorial/errors.html#handling-exceptions

https://docs.python.org/3/library/exceptions.html#ValueError

try:
  int("x")
except Exception as e:
  '''异常的父类,可以捕获所有的异常'''
  print(e)
# e变量是Exception类型的实例,支持__str__()方法,可以直接打印。 
invalid literal for int() with base 10: 'x'
try:
  int("x")
except Exception as e:
  '''异常的父类,可以捕获所有的异常'''
  print(e.args)
# e变量有个属性是.args,它是错误信息的元组
("invalid literal for int() with base 10: 'x'",)try: datetime(2017,2,30)except ValueError as e: print(e) day is out of range for monthtry: datetime(22017,2,30)except ValueError as e: print(e) year 22017 is out of rangetry: datetime(2017,22,30)except ValueError as e: print(e) month must be in 1..12e = Nonetry: datetime(2017,22,30)except ValueError as e: print(e) month must be in 1..12e
# e这个变量在异常过程结束后即被释放,再调用也无效
 Traceback (most recent call last): File "<input>", line 1, in <module>NameError: name 'e' is not defined
errarg = None
try:
  datetime(2017,22,30)
except ValueError as errarg:
  print(errarg)
  
month must be in 1..12
errarg
Traceback (most recent call last):
 File "<input>", line 1, in <module>
NameError: name 'errarg' is not defined
try:
  datetime(2017,22,30)
except ValueError as errarg:
  print(errarg.args)

# ValueError.args 返回元组

('month must be in 1..12',)
message = None
try:
  datetime(2017,22,30)
except ValueError as errarg:
  print(errarg.args)
  message = errarg.args
  
('month must be in 1..12',)
message
('month must be in 1..12',)
try:
  datetime(2017,22,30)
except ValueError as errarg:
  print(errarg.args)
  message = errarg
  
('month must be in 1..12',)
message
ValueError('month must be in 1..12',)
str(message)
'month must be in 1..12'

分析异常信息,并根据异常信息的提示做出相应处理:

try:
  y = 2017
  m = 22
  d = 30
  datetime(y,m,d)
except ValueError as errarg:
  print(errarg.args)
  message = errarg
  m = re.search(u"month", str(message))
  if m:
    dt = datetime(y,1,d)
    
('month must be in 1..12',)
dt
datetime.datetime(2017, 1, 30, 0, 0)

甚至可以再except中进行递归调用:

def validatedate(y, mo, d):
  dt = None
  try:
    dt = datetime(y, mo, d)
  except ValueError as e:
    print(e.args)
    print(str(y)+str(mo)+str(d))
    message = e
    ma = re.search(u"^(year)|(month)|(day)", str(message))
    ymd = ma.groups()
    if ymd[0]:
      dt = validatedate(datetime.now().year, mo, d)
    if ymd[1]:
      dt = validatedate(y, datetime.now().month, d)
    if ymd[2]:
      dt = validatedate(y, mo, datetime.now().day)
  finally:
    return dt 
validatedate(20199, 16, 33)
('year 20199 is out of range',)
('month must be in 1..12',)
('day is out of range for month',)
datetime.datetime(2018, 4, 20, 0, 0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
python 的列表遍历删除实现代码
Apr 12 Python
python3中bytes和string之间的互相转换
Feb 09 Python
python算法演练_One Rule 算法(详解)
May 17 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
Python实现注册、登录小程序功能
Sep 21 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
python如何随机生成高强度密码
Aug 19 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
python 多进程共享全局变量之Manager()详解
Aug 15 #Python
使用Python调取任意数字资产钱包余额功能
Aug 15 #Python
centos7之Python3.74安装教程
Aug 15 #Python
详解python列表(list)的使用技巧及高级操作
Aug 15 #Python
django项目中使用手机号登录的实例代码
Aug 15 #Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 #Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 #Python
You might like
php下intval()和(int)转换使用与区别
2008/07/18 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
详解php用static方法的原因
2018/09/12 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
Python编程中的反模式实例分析
2014/12/08 Python
分析python请求数据
2018/08/19 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
SQL语言面试题
2013/08/27 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
推荐信怎么写
2014/05/09 职场文书
高中班级口号
2014/06/09 职场文书
授权委托书样本
2014/09/25 职场文书
企业法人代表证明书
2015/06/18 职场文书
运动会报道稿大全
2015/07/23 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python