python异常处理、自定义异常、断言原理与用法分析


Posted in Python onMarch 23, 2020

本文实例讲述了python异常处理、自定义异常、断言原理与用法。分享给大家供大家参考,具体如下:

什么是异常:

  • 当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象,如果传入一个不能转化的对象就会报错并抛出异常python异常处理、自定义异常、断言原理与用法分析
  • 常用的异常有:

ValueError :传入无效的错误的参数python异常处理、自定义异常、断言原理与用法分析

TypeError:进行了对类型无效的操作python异常处理、自定义异常、断言原理与用法分析

IndexError:序列中没有此索引python异常处理、自定义异常、断言原理与用法分析

NameError:使用未定义的变量python异常处理、自定义异常、断言原理与用法分析

 

更多更具体的异常可以参考Python官方文档python异常处理、自定义异常、断言原理与用法分析,读读官方文档更健康


异常的处理:

  • python使用try,except,finally,else来处理异常,它们各自意义如下:

python异常处理、自定义异常、断言原理与用法分析

try:
  s=input("请输入要int的字符串:")
  i=int(s)
except ValueError as e:
  print(e)
else:
  print("这里是当没有发生异常时的操作")
finally:
  print("这里是即使发生异常也会执行的代码")

"""第一次运行结果:
请输入要int的字符串:123
这里是当没有发生异常时的操作
这里是即使发生异常也会执行的代码
"""
"""第二次运行结果
请输入要int的字符串:abc
invalid literal for int() with base 10: 'abc'
这里是即使发生异常也会执行的代码
"""
  • except可以在一条except里捕获多个异常,但需要用括号包裹多个异常,并且即使同时捕获多个异常,由于异常会导致程序发生终止,所以只会捕获到一个异常,所以只需要一个获取异常返回对象的变量:python异常处理、自定义异常、断言原理与用法分析
  • 如果不确定捕获什么异常,可以使用异常的基类Exception【更高级的可以使用BaseException】,并且最好把Exception放在所有except的最后:python异常处理、自定义异常、断言原理与用法分析

自定义异常:

  • 使用raise可以抛出自定义的异常信息python异常处理、自定义异常、断言原理与用法分析
  • 只要继承了Exception,就可以定义自己的异常类:python异常处理、自定义异常、断言原理与用法分析
class myException(Exception):
  def __init__(self,msg):
     self.message=msg
  def __str__(self):###这里就是异常的字符串信息
    return self.message

try :
  raise myException("我的异常")#py3

except myException as e:
  print(e)
  
"""
结果:
我的异常
"""

断言:

  • 意义:与其让程序在运行最崩溃,不如在出现错误条件时就崩溃【比如说,老司机想要开车,随便开车风险很大的,使用断言就好像先判断路况如何,然后再开车,而不是说开车出去才发现交警大队在等待】
police=False
assert police ==False
print("老司机开车啦,呜呜呜")

police=True
assert police ==False
print("老司机开车啦,呜呜呜")#报错,AssertionError

更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Python中使用模块的教程
Apr 27 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
python getopt详解及简单实例
Dec 30 Python
详解python单元测试框架unittest
Jul 02 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
Python何时应该使用Lambda函数
Jul 02 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
python sorted函数原理解析及练习
Feb 10 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
Python 实现Mac 屏幕截图详解
Oct 05 Python
python lambda 表达式形式分析
Apr 03 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 Python
python实现单张图像拼接与批量图片拼接
Mar 23 #Python
OpenCV Python实现拼图小游戏
Mar 23 #Python
PYcharm 激活方法(推荐)
Mar 23 #Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 #Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 #Python
Python常用编译器原理及特点解析
Mar 23 #Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 #Python
You might like
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
php判断是否为json格式的方法
2014/03/04 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
详解django中使用定时任务的方法
2018/09/27 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
Unix控制后台进程都有哪些进程
2016/09/22 面试题
《祁黄羊》教学反思
2016/02/20 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫