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 相关文章推荐
Django中几种重定向方法
Apr 28 Python
Python实现多并发访问网站功能示例
Jun 19 Python
python中的随机函数小结
Jan 27 Python
详解python中的json和字典dict
Jun 22 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
Python连接Impala实现步骤解析
Aug 04 Python
python字典key不能是可以是啥类型
Aug 04 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 26 Python
python之json文件转xml文件案例讲解
Aug 07 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 编程安全性小结
2010/01/08 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
详解YII关联查询
2016/01/10 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python之生产者消费者模型实现详解
2019/07/27 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
元旦晚会邀请函
2014/02/01 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
洗手间标语
2014/06/23 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
处罚决定书范文
2015/06/24 职场文书
运动会运动员赞词
2015/07/22 职场文书
医院消毒隔离制度
2015/08/05 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python