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 相关文章推荐
用Python创建声明性迷你语言的教程
Apr 13 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
python求最大连续子数组的和
Jul 07 Python
python 字典中取值的两种方法小结
Aug 02 Python
三步实现Django Paginator分页的方法
Jun 11 Python
Python八皇后问题解答过程详解
Jul 29 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
django的autoreload机制实现
Jun 03 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
python-地图可视化组件folium的操作
Dec 14 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php基础知识:函数基础知识
2006/12/13 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
PHP fclose函数用法总结
2019/02/15 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Python-split()函数实例用法讲解
2020/12/18 Python
财务管理专业推荐信
2013/11/19 职场文书
安全目标管理责任书
2014/07/25 职场文书
银行自荐信范文
2015/03/25 职场文书
导师鉴定意见
2015/06/05 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript