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站点的方法
Jul 22 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
Python装饰器用法实例总结
May 26 Python
Python中常用的内置方法
Jan 28 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
django-allauth入门学习和使用详解
Jul 03 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
python关于变量名的基础知识点
Mar 03 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 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的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
js星星评分效果
2014/07/24 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
Python多线程编程(一):threading模块综述
2015/04/05 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
Python实现读取json文件到excel表
2017/11/18 Python
python实现微信自动回复机器人功能
2019/07/11 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
Java模拟试题
2014/11/10 面试题
行政助理岗位职责范文
2013/12/03 职场文书
毕业自我鉴定书
2014/03/24 职场文书
安全生产承诺书
2014/03/26 职场文书
婚前财产公证书
2014/04/10 职场文书
毕业留言寄语大全
2014/04/10 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
岳庙导游词
2015/02/04 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android