异常(运行时错误):

当代码逻辑遇到意外事件时,比如打开一个文件,却发现文件不存在。这时是增加额外的代码处理逻辑,还是捕获异常呢?答案是:Python优先推荐捕获异常,然后恢复。

Python异常机制

       把异常当作正常情况处理。先尝试运行可能出现异常的代码,有异常就捕获,然后恢复。

额外的代码和逻辑,还是异常处理?

1.增加额外的代码和逻辑随着你考虑的错误越多,要添加的代码和逻辑也就越多,直到可能会掩盖程序本来逻辑。而异常处理方案不存在这个问题,使用异常处理你可以一目了然的看出程序的主要逻辑。

2.而且你很难考虑到所有可能的错误情况。用异常处理机制可以轻松应对所有的异常。

3.增加额外的代码和逻辑导致可能和实际错误的耦合性太大,代码要跟着情况变。而异常处理只需要关注是哪种异常。

4.使用Python的异常处理机制,你可以专心关注程序真正需要做什么,而不是操心哪儿可能出问题,并编写额外的代码来避免运行时错误。

5.简单的说,就是用额外的代码和逻辑会增加复杂性,这会给调试和修正代码带来麻烦。而Python的异常处理机制能让你专心关注代码的主要逻辑。

所以还是推荐异常处理机制。

Python异常机制具体内容:

一般化处理

try:

#可能出现异常的代码

except:

#错误恢复代码

处理特定异常

try:

#可能出现异常的代码

except 具体异常:

#对应的特定异常的处理代码

保证无论是否出现异常某些代码都会执行

ry:

#可能出现异常的代码

except 具体异常:

#对应的特定异常的处理代码

finally:

#一定会执行的代码

PS:

处理异常时,可以在异常处理代码中使用pass语句简单的忽略异常。pass语句是Python的空语句,它什么也不做。

在Python中,数据不符合期望的格式时会出现ValueError异常。数据无法正常访问时会出现IOError异常。

《Head First Python》学习笔记03 异常处理的更多相关文章

  1. Python学习笔记之异常处理

    1.概念 Python 使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被捕获时,程序将终止并显示一条错误信息 >>> 1/0 # Traceback (most re ...

  2. 【Python学习笔记】异常处理try-except

    Python异常处理 我们一般使用try-except语句来进行异常处理. 使用except Exception as err可以统一捕捉所有异常,而也可以分开处理单个异常. # 分开捕捉单个异常 t ...

  3. python学习笔记(异常处理)

    上次提到正则表达式 当未匹配到数据返回值 None 再使用 match.group 会出现异常 AttributeError 为了避免异常我改成“ match != None” 这次加入异常处理 #! ...

  4. Python学习笔记9——异常处理

    处理异常 如果执行到程序中某处抛出了异常,程序就会被终止并退出.你可能会问,那有没有什么办法可以不终止程序,让其照样运行下去呢?答案当然是肯定的,这也就是我们所说的异常处理,通常使用 try 和 ex ...

  5. python学习笔记(八):异常处理

    一.异常处理 在程序运行过程中,总会遇到各种各样的错误.程序一出错就停止运行了,那我们不能让程序停止运行吧,这时候就需要捕捉异常了,通过捕捉到的异常,我们再去做对应的处理. 下面我们先写一个函数,实现 ...

  6. python学习笔记03 --------------程序交互与格式化输出

    1.读取用户输入内容 语法:input() 例: name = input('你的名字是?) print('你好'+name) 程序会等待用户输入名字后打印:你好(用户输入的名字) 注意:input接 ...

  7. python学习笔记03:python的核心数据类型

    从根本上讲,Python是一种面向对象的语言.它的类模块支持多态,操作符重载和多重继承等高级概念,并且以Python特有的简洁的语法和类型,OOP十分易于使用.Python的语法简单,容易上手. Py ...

  8. Python 学习笔记18 异常处理

    我们在编码的过程中,难免会遇到一些错误和异常, 这时候程序会异常退出,并且会抛出错误信息: 比如: print(1/0) ''' 输出: Traceback (most recent call las ...

  9. Python学习笔记03

      区间访问:[from:to:step] step默认是1:from表示起始索引(包括),to表示结束索引(不包括) step如果有符号,表示方向从右到左; from,to有符号,表示从倒数开始算, ...

随机推荐

  1. 3D人脸识别预处理,3D face recognition preprocess

    本文由兔崩溃公布http://blog.csdn.net/smartempire/article/details/31373817. 转载请注明出处.howdeshui#163.com 近期在做三维人 ...

  2. select刷新后,保持选定状态,Cookies存储select选定状态信息

    //cookies存储select选定值,防止刷新后没了 window.onload = function () { var cooki = document.cookie; if (cooki != ...

  3. 在地图中使用Java

    Map以按键/数值对的形式存储数据,和数组很类似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部类 ...

  4. ichartjs 使用BUG,assign_scale:true 解决

    今天纯属灌水,好久没灌水的. 最近使用了flotr2 和 ichartjs进行canvas图标的开发,都不能满足需求. 没办法,先将就用用吧.然后,既然其他大神推荐使用ichartjs,为了统一,我也 ...

  5. C# 通过扩展WebBrowser捕获网络连接错误信息

    想捕获WebBrowser连接指定网站过程中发生的错误信息,包括网络无法连接.404找不到网页等等错误!经过网上的搜集,找到了以下解决方案,该解决方案不会在网站连接前发出多余的测试请求. 向Webbr ...

  6. RPL协议介绍

    RPL是IPv6 Routing Protocol for Low-Power and Lossy Networks的简称. 低功耗及有损网络(LLN)是一类内部链接和路由器都受限的网络,该网络下的路 ...

  7. 使用.net备份和还原数据库

    原文:使用.net备份和还原数据库 CSDN网友的提问http://community.csdn.net/Expert/TopicView3.asp?id=4929678C#实现SQLSERVER20 ...

  8. .NET MVC4 实训记录之三(EntityFramework 与枚举)

    EntityFramework对枚举的引入是从版本5开始的(如果没有记错的话).枚举可以很大程度上提高对程序的可读性.那么在EntityFramework的CodeFirst模式下,如何使用枚举呢?答 ...

  9. 使用fixed制作浮动广告(注意:解决闪屏问题,但适用于高版本浏览器,低版本的浏览器不适用)

    <script language="javascript" type="text/javascript"> //隐藏广告 function clos ...

  10. 在Idea中调试ant应用

    Ant调试 Ant调试 ant 是一种非常方便的打包,部署的工具,通过ant,可以一键构建整个项目,虽然MVN也支持这种功能,但是MVN混杂了package管理的功能,并且不是很自由,学习成本比较高. ...