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中使用platform模块获取系统信息的用法教程
Jul 08 Python
Python列表切片用法示例
Apr 19 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
python中的随机函数小结
Jan 27 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
Python socket聊天脚本代码实例
Jan 02 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
分享7个 Python 实战项目练习
Mar 03 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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语法速查表
2007/01/02 PHP
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php中的常用魔术方法总结
2013/08/02 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
js实现飞入星星特效代码
2014/10/17 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Vue.js图片预览插件使用详解
2018/08/27 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
python实现126邮箱发送邮件
2020/05/20 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
干部选拔任用方案
2014/05/26 职场文书
文明礼仪标语
2014/06/13 职场文书
公司授权委托书范本
2014/09/18 职场文书
出差报告范文
2014/11/06 职场文书
付款承诺函范文
2015/01/21 职场文书
世界气象日活动总结
2015/02/27 职场文书
部队2015年终工作总结
2015/04/02 职场文书
重阳节简报
2015/07/20 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang