在python中、如果异常并未被处理或捕捉_7、Python-异常
本节主要介绍Python中异常处理的原理和主要的形式。
1、什么是异常
Python中用异常对象来表示异常情况。程序在运行期间遇到错误后会引发异常。如果异常对象并未被处理或捕获,程序就会回溯终止执行。
2、抛出异常
raise语句,raise后面跟上Exception异常类或者Exception的子类,还可以在Exception的括号中加入异常的信息。
>>>raise Exception('message')
注意:Exception类是所有异常类的基类,我们还可以根据该类创建自己定义的异常类,如下:
class SomeCustomException(Exception): pass
3、捕捉异常(try/except语句)
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
一个try语句块中可以抛出多个异常:
1 try:2 x = input('Enter the first number:')3 y = input('Enter the second number:')4 print x/y5 exceptZeroDivisionError:6 print "The second number can't be zero!"
7 exceptTypeError:8 print "That wasn't a number, was it?"
一个except语句可以捕获多个异常:
1 try:2 x = input('Enter the first number:')3 y = input('Enter the second number:')4 print x/y5 except(ZeroDivisionError, TypeError, NameError): #注意except语句后面的小括号6 print 'Your numbers were bogus...'
访问捕捉到的异常对象并将异常信息打印输出:
1 try:2 x = input('Enter the first number:')3 y = input('Enter the second number:')4 print x/y5 except(ZeroDivisionError, TypeError), e:6 print e
捕捉全部异常,防止漏掉无法预测的异常情况:
1 try:2 x = input('Enter the first number:')3 y = input('Enter the second number:')4 print x/y5 except:6 print 'Someting wrong happened...'
4、else子句。除了使用except子句,还可以使用else子句,如果try块中没有引发异常,else子句就会被执行。
1 while 1:2 try:3 x = input('Enter the first number:')4 y = input('Enter the second number:')5 value = x/y6 print 'x/y is', value7 except:8 print 'Invalid input. Please try again.'
9 else:10 break
上面代码块运行后用户输入的x、y值合法的情况下将执行else子句,从而让程序退出执行。
5、finally子句。不论try子句中是否发生异常情况,finally子句肯定会被执行,也可以和else子句一起使用。finally子句常用在程序的最后关闭文件或网络套接字。
1 try:2 1/03 except:4 print 'Unknow variable'
5 else:6 print 'That went well'
7 finally:8 print 'Cleaning up'
6、异常和函数
如果异常在函数内引发而不被处理,它就会传递到函数调用的地方,如果一直不被处理,异常会传递到主程序,以堆栈跟踪的形式终止。
deffaulty():raise Exception('Someting is wrong!')defignore_exception():
faulty()defhandle_exception():try:
faulty()exceptException, e:print 'Exception handled!',e
handle_exception()
ignore_exception()
在上面的代码块中,函数handle_exception()在调用faulty()后,faulty()函数抛出异常并被传递到handle_exception()中,从而被try/except语句处理。而ignare_exception()函数中没有对faulty()做异常处理,从而引发异常的堆栈跟踪。
注意:条件语句if/esle可以实现和异常处理同样的功能,但是条件语句可能在自然性和可读性上差一些。
在python中、如果异常并未被处理或捕捉_7、Python-异常相关推荐
- python中ifelifelse用在什么结构_详解Python if-elif-else知识点
有的时候,一个 if - else - 还不够用.比如,根据年龄的划分:条件1:18岁或以上:adult 条件2:6岁或以上:teenager 条件3:6岁以下:kid Python if-elif- ...
- python字符串能减吗_在python中减去两个字符串(Subtract two strings in python)
在python中减去两个字符串(Subtract two strings in python) 我应该计算两个不同列表的元素之间的差异. 这是我的代码: import operator a = ['5 ...
- python中superclass是什么_深度解析并实现python中的super(转载,好文)
大神半个月的成绩,让我看的叹为观止,建议看原帖地址,会让你对Python的描述符有更强的认识. 原文链接:https://blog.csdn.net/zhangjg_blog/article/deta ...
- python中的常量可以修改吗_深入理解Python变量与常量
变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变.基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中.常量是一块只读的内存区域,常量一旦被初始化就不能被 ...
- python中for无限循环_关于循环:在Python中从1循环到无穷大
在C语言中,我会这样做: 1 2 3 4int i; for (i = 0;; i++) if (thereIsAReasonToBreak(i)) break; 如何在Python中实现类似的功能? ...
- 在python中、如果异常并未被处理或捕捉_python异常处理(一)
Python的异常处理能力是很强大的,可向用户准确反馈出错信息.在Python中,异常也是对象,可对它进行操作.所有异常都是基类Exception的成员.所有异常都从基类Exception继承,而且都 ...
- 在python中、如果异常并未被处理或捕捉_Python异常处理总结
本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下: 1. 抛出异常和自定义异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常.如果 ...
- python中监控错误的语句_Python学习_07_错误、异常
地毯式地过语法终于快要结束了... Python中的常见异常 1.NameError:尝试访问一个未初始化的变量 2. ZeroDivisionError:除数为0 3. SyntaxError:Py ...
- python中try和except语句语言导入包吗_Python异常处理中try与except用法的案例
Python异常处理中try与except用法的案例 发布时间:2020-11-03 09:44:36 来源:亿速云 阅读:85 作者:小新 小编给大家分享一下Python异常处理中try与excep ...
最新文章
- winform TreeView 节点选择
- Python和xml简介
- easyui 通用的datagrid中如何带有查询条件分页
- Cloud for Customer的前端如何判断自己是运行在PC浏览器还是移动设备里
- python教材答案第四章_python核心编程课后习题解答第四章
- java中的ioc和aop_IOC和AOP分别是什么?如何理解?
- Linux上的tomcat版本升级
- 推荐系统之GBDT+LR
- 电脑PHP动画制作画板,Canvas在线画图—简单制作一个画板
- flutter 如何获取屏幕的尺寸
- mysql设置bufferpool_mysql修改buffer_pool大小
- 通过url给action传中文参数乱码解决方案
- 手机抓取蓝牙日志btsnoop的方法汇总(Android一直补充中)
- php做网站需要注意什么,浅谈新手做网站应该注意的问题
- 【信号采集】基于FPGA的高速信号采集系统
- 科技向“实”万物生长,2023年云计算五大技术趋势展望
- 点源声场的MATLAB仿真
- 最常见的 SQL 查询错误 - 第二章节
- 设置web页面鼠标样式
- uc云观媒体服务平台_UC云观自媒体为什么没有阅读量?
热门文章
- 在Ubuntu下进行MongoDB安装步骤
- Meta:绝对没有威胁要离开欧洲市场
- 雷军:智能制造将进一步带动中国企业在全球市场的全面崛起
- 三年白干!程序员因违反《竞业协议》赔偿腾讯97.6万元,返还15.8万元
- B站处罚百万粉丝UP主LexBurner:封禁账号 起诉追究法律责任
- 被骂十几年,躺赚上千亿!这个“土匪”行业,还能浪多久?
- 爱库存:已实名举报唯品会不正当竞争行为
- 5G商用将满一年,6G研发开始了...
- 称对方攀附使用近似商标 “汽车之家”起诉索赔500万
- 小米10官宣首发骁龙865,小米6“钉子户”可以考虑换机了