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使用cookielib库示例分享
Mar 03 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python线程中的同步问题及解决方法
Aug 29 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
pytorch实现查看当前学习率
Jun 24 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
浅析Python中字符串的intern机制
Oct 03 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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 计划任务 检测用户连接状态
2012/03/29 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
Angular6封装http请求的步骤详解
2018/08/13 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python自动发邮件脚本
2017/03/31 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android