Python——异常基础
在Python中,异常会依据错误自己主动地被触发。也能由代码触发和截获。异常由五个语句处理:
1.【try/except】:捕捉由Python或你引起的异常并恢复。
2.【try/finally】:不管异常是否发生,运行清理行为。
3.【raise】:手动在代码中触发异常。
4.【assert】:有条件地在程序代码中触发异常。
5.【with/as】:在Python2.6和兴许版本号中实现环境管理器
异常通常能够用于各种用途。
以下是它最常见的几种角色:
1.错误处理:每当在执行时检測到程序错误时,Python就会引发异常,能够在代码中捕捉和对应错误。或者忽略已发生的异常。
2.事件通知:异常也可用于发出有效状态的信号,而不需在程序间传递结果标志位,或者刻意对其进行測试。
3.特殊情况处理:有时,发生了非常罕见的情况。非常难调整代码去处理,一般会在异常处理器中处理这些罕见的情况,从而省去应对特殊情况的代码。
4.终止行为:try/finally语句可确保一定会进行须要的结束运算。不管程序中是否有异常。
5.很规控制流程
-----------------------------------------------------------------------------------------------------------------------------------
默认异常处理器
如果编写以下的函数:
>>> def fetcher(obj,index):return obj[index]
正常运算中。它将返回合法的索引值的结果:
>>> x = 'spam'
>>> fetcher(x,3)
'm'
然而,若索引指向字符串末尾以后的位置,就会引发异常。Python会替序列检測到超出边界的索引运算,并通过【抛出】内置的IndexError异常进行报告。
>>> fetcher(x,4)
Traceback (most recent call last):File "<pyshell#5>", line 1, in <module>fetcher(x,4)File "<pyshell#2>", line 2, in fetcherreturn obj[index]
IndexError: string index out of range
由于我们的代码没有能够捕捉这个异常。所以它将会一直向上返回到程序顶层,并启用【默认的异常处理器】:就是打印标准出错消息。
-----------------------------------------------------------------------------------------------------------------------------------
捕获异常
只是,在有些情况下。这并非我们想要的。比如,server程序一般须要在内部发生错误时依旧保持工作。
假设不想要默认的异常行为。就须要把调用包装在try语句内。自行捕捉异常。
>>>
try:fetcher(x,4)
except IndexError:print('got exception')got exception
如今,当try代码块运行时触发异常。Python会自己主动跳至处理器(指出引发的异常名称的except分句以下的代码块)。
在实际的程序中。try语句不仅会捕获异常,也会从中恢复运行:
>>> def catcher():try:fetcher(x,4)except IndexError:print('got exception')print('continuing')>>> catcher()
got exception
continuing
这次,在异常捕捉和处理后。程序在捕捉了整个try语句后继续执行:这就是得到“continuing”消息的原因。我们没有看见标准出错消息,而程序也将正常执行下去。
============================================================================
用户定义的异常
用户定义的异常可以通过类编写,它继承自一个内置的异常类:通常这个类的名称叫做Exception。
>>> class Bad(Exception):pass>>> def doomed():raise Bad()>>>
try:doomed()
except Bad:print('Got Bad')Got Bad
============================================================================
终止行为
最后。try语句能够包括finally代码块,这能够定义一定会在最后运行时的收尾行为,不管try代码块中是否发生了异常。
>>>
try:fetcher(x,3)
finally:print('after fetch')'m'
after fetch
在这里,假设try代码块完毕后没有异常,finally代码块就会运行,而程序会在整个try后继续下去。
在之后将会看到,在使用某些类型的对象的时候,Python2.6和Python3提供了try/finally的一种替代。
with/as执行一个对象的环境管理逻辑,来确保终止行为的发生:
>>> with open('test.txt','w') as file:file.write('The night!')
转载于:https://www.cnblogs.com/claireyuancy/p/7040755.html
Python——异常基础相关推荐
- Python培训基础教程都教哪些
根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...
- 请问大家如何看待Python?零基础如何学Python?
给大家整理的这套python学习路线图,按照此教程来一步步的学习,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...
- python编程基础与应用-有哪些适合零编程基础的人学习Python的书?
筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...
- python零基础能学吗 知乎-如何零基础入门 Python?
从17年6月入门Python到今天有大半年了,总结一下这半年来自学Python的路径. 本人只在两年前接触过HTML和CSS,但严格来说这两门只能算是标记语言而非编程语言,而且开始学Python的时候 ...
- python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析
自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...
- 学会python之后-python学会基础语法之后,如何提高?
1.找到发展方向,选择合适的学习线路图 我一直都认为找到未来发展方向才是最重要的事情.我说说我自己吧,我一开始觉得python有发展方向,因为我是一个做推广的,也涉及到seo相关工作.我深知道数据的重 ...
- python编程基础与应用-Python程序设计基础与应用
图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...
- 【目录】Python 入门基础篇 <(^-^)>
Python 入门基础篇 一.关于Python的介绍与准备工作 Python基础介绍 Jupyter notebook基础介绍 Jupyter notebook打开问题 Jupyter noteboo ...
- Python开发基础----异常处理、socket套接字基础1
异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...
最新文章
- 推荐搜索系统论文干货集锦(持续更新)
- python中str是什么_python的str()字符串类型的方法详解
- WinForm窗体自适应分辨率
- plsql中oracle定时任务日志,速掌握一个简单的Oracle定时任务
- mysql简历上怎么写_新手程序员简历应该怎么写?
- Firefox 59 正式发布:改进页面加载速度和屏幕截图工具
- 三分钟快速了解typeScript接口
- 如何制作企业招聘二维码?
- Sqoop技术—安装及使用教程
- 中兴V880手机的随机软件列表
- 支付宝小程序开发体验
- 算法分析学习笔记二 蛮力法
- AWS白皮书 – 安全性
- lua与C(一):C调用lua
- 【LeetCode 1000】 Minimum Cost to Merge Stones
- LINUX学习笔记之mount命令
- 龙芯3A4000 pmon编译方法
- GitHub标星1.6K,大佬开源的抖音项目,刷屏全网!
- 关于树莓派程序加密和加密分区的设置
- linux_bochs的安装