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标准库difflib比较两份文件的异同详解
Nov 16 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 Python
通过代码实例了解Python sys模块
Sep 14 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
Pycharm github配置实现过程图解
Oct 13 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
Python 线程池模块之多线程操作代码
May 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
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
PHP文件上传类实例详解
2016/04/08 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
php实现等比例压缩图片
2018/07/26 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python中的rjust()方法使用详解
2015/05/19 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
Mysql基础知识点汇总
2021/05/26 MySQL
浅谈Python中对象是如何被调用的
2022/04/06 Python
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python