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之yield表达式学习
Sep 02 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Python获取任意xml节点值的方法
May 05 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
python如何对实例属性进行类型检查
Mar 20 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
Python2和Python3中@abstractmethod使用方法
Feb 04 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
python实现监听键盘
Apr 26 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/23 PHP
php实现短信发送代码
2015/07/05 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
layui使用数据表格实现购物车功能
2019/07/26 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python从入门到精通(DAY 1)
2015/12/20 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python制作exe文件简单流程
2019/01/24 Python
通过python爬虫赚钱的方法
2019/01/29 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
django 信号调度机制详解
2019/07/19 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
django迁移文件migrations的实现
2020/03/31 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
群众路线自我剖析范文
2014/11/04 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
毕业生个人自荐书
2015/03/05 职场文书
安全教育培训心得体会
2016/01/15 职场文书