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 08 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
一看就懂得Python的math模块
Oct 21 Python
django中使用POST方法获取POST数据
Aug 20 Python
在django模板中实现超链接配置
Aug 21 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 Python
Python虚拟环境venv用法详解
May 25 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
7个关于Python的经典基础案例
Nov 07 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 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
js对象的比较
2011/02/26 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python实现截屏的函数
2015/07/25 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
strlen的几种不同实现方法
2013/05/31 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
会议室使用管理制度
2015/08/06 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
React Fragment介绍与使用详解
2021/11/11 Javascript