Python——异常基础
来源:互联网 发布:安溪网络电信诈骗案 编辑:程序博客网 时间:2024/06/14 19:48
异常基础
在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.非常规控制流程
-----------------------------------------------------------------------------------------------------------------------------------
默认异常处理器
============================================================================
最后,try语句可以包含finally代码块,这可以定义一定会在最后执行时的收尾行为,无论try代码块中是否发生了异常。
在之后将会看到,在使用某些类型的对象的时候,Python2.6和Python3提供了try/finally的一种替代。with/as运行一个对象的环境管理逻辑,来确保终止行为的发生:
在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 fetcher return obj[index]IndexError: string index out of range因为我们的代码没有可以捕捉这个异常,所以它将会一直向上返回到程序顶层,并启用【默认的异常处理器】:就是打印标准出错消息。
-----------------------------------------------------------------------------------------------------------------------------------
捕获异常
不过,在有些情况下,这并不是我们想要的。例如,服务器程序一般需要在内部错误发生时依然保持工作。如果不想要默认的异常行为,就需要把调用包装在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 exceptioncontinuing这次,在异常捕捉和处理后,程序在捕捉了整个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!')
0 0
- Python——异常基础
- Python基础——异常
- python基础——反射和异常
- Python 基础 ——异常与错误处理
- python基础学习四——控制结构与异常
- Python基础学习篇—异常处理机制
- python异常基础
- Python<2>异常基础
- Python基础:23异常
- python基础之异常
- Python基础--异常
- python基础--异常
- Python 基础-捕获异常
- python 异常基础内容
- Python 基础之异常
- python异常处理(基础)
- python异常处理(基础)
- python异常处理基础笔记
- PHP内置Web Server探究(一)启动Cli_Server
- Spring MVC 4 Quickstart Maven Archetype(代码在我上传的资源有)
- PHPExcel处理富文本RichText
- OpenBlas-base引擎提升“R”计算性能
- 应用深度学习时需要思考的问题
- Python——异常基础
- 开发者“Time To Market”的六大准则
- iPhone浏览器性能测试
- 途牛原创|SQLite 加密解决方案
- 关于Python中以字母r/R,或字母u/U 开头的字符串
- 个人讨厌LOL的理由:该游戏及是付出和回报不平的印证
- github的基本使用
- 将Excel表格数据导入数据库
- spring整合hibernate完整版