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 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python使用pil生成图片验证码的方法
May 08 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
python基础while循环及if判断的实例讲解
Aug 25 Python
Numpy数组的保存与读取方法
Apr 04 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 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版(2)
2006/10/09 PHP
php实现微信发红包
2015/12/05 PHP
php生成图片验证码的方法
2016/04/15 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
广告代码静态化js通用函数
2007/05/09 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
python实现字符串和字典的转换
2018/09/29 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python怎么提高计算速度
2020/06/11 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
夏洛特的网观后感
2015/06/15 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
MySQL事务的隔离级别详情
2022/07/15 MySQL