异常基础
在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——异常基础相关推荐

  1. Python培训基础教程都教哪些

    根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...

  2. 请问大家如何看待Python?零基础如何学Python?

    给大家整理的这套python学习路线图,按照此教程来一步步的学习,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...

  3. python编程基础与应用-有哪些适合零编程基础的人学习Python的书?

    筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...

  4. python零基础能学吗 知乎-如何零基础入门 Python?

    从17年6月入门Python到今天有大半年了,总结一下这半年来自学Python的路径. 本人只在两年前接触过HTML和CSS,但严格来说这两门只能算是标记语言而非编程语言,而且开始学Python的时候 ...

  5. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

  6. 学会python之后-python学会基础语法之后,如何提高?

    1.找到发展方向,选择合适的学习线路图 我一直都认为找到未来发展方向才是最重要的事情.我说说我自己吧,我一开始觉得python有发展方向,因为我是一个做推广的,也涉及到seo相关工作.我深知道数据的重 ...

  7. python编程基础与应用-Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  8. 【目录】Python 入门基础篇 <(^-^)>

    Python 入门基础篇 一.关于Python的介绍与准备工作 Python基础介绍 Jupyter notebook基础介绍 Jupyter notebook打开问题 Jupyter noteboo ...

  9. Python开发基础----异常处理、socket套接字基础1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

最新文章

  1. 推荐搜索系统论文干货集锦(持续更新)
  2. python中str是什么_python的str()字符串类型的方法详解
  3. WinForm窗体自适应分辨率
  4. plsql中oracle定时任务日志,速掌握一个简单的Oracle定时任务
  5. mysql简历上怎么写_新手程序员简历应该怎么写?
  6. Firefox 59 正式发布:改进页面加载速度和屏幕截图工具
  7. 三分钟快速了解typeScript接口
  8. 如何制作企业招聘二维码?
  9. Sqoop技术—安装及使用教程
  10. 中兴V880手机的随机软件列表
  11. 支付宝小程序开发体验
  12. 算法分析学习笔记二 蛮力法
  13. AWS白皮书 – 安全性
  14. lua与C(一):C调用lua
  15. 【LeetCode 1000】 Minimum Cost to Merge Stones
  16. LINUX学习笔记之mount命令
  17. 龙芯3A4000 pmon编译方法
  18. GitHub标星1.6K,大佬开源的抖音项目,刷屏全网!
  19. 关于树莓派程序加密和加密分区的设置
  20. linux_bochs的安装

热门文章

  1. 父母有退休工资和没有退休工资的比较,家庭生活区别大吗?
  2. 工厂打工10年,现在被工厂以能力不足为由辞退,可以去仲裁吗?
  3. 到底应不应该表达自己对工作安排的不满?
  4. 高瓴突然清仓阿里巴巴、蔚来、理想、小鹏,是怎么回事?
  5. 2021第一场教师招聘考试3.28开始!一个月备考来得及吗?
  6. 四面八方的意思是什么,怎么用四面八方造句?
  7. 如何判断一个大佬值不值得跟随
  8. 为什么说电商创业的机会在变少?
  9. 最近和一个创业中的朋友喝茶聊天
  10. 员工为什么缺乏执行力?