异常是指程序中的例外、违例情况,比如序列的下标越界、打开不存在的文件、空引用异常等。通过捕获异常并进行正确处理,可以提高程序的健壮性。如果没有代码处理异常,Python解释器将输出相关异常信息并终止程序。

Python中处理异常是通过try/except/else/finally语句完成。它们的语法结构下:

try:
Normal execution block
except A:
Exception A handle
except B:
Exception B handle
except:
Other exception handle
else:
if no exception,get here
finally:
print("finally")

说明:

1、try子句中的代码防止可能出现异常的语句。

2、except子句为捕获异常时进行处理的逻辑。except A、except B中的语句表示捕获到异常为A、异常类型为B时针对性处理的逻辑。except表示除去异常类型A、B之外所有其他类型。

3、else子句在try子句中代码执行未发生异常情况下执行。else语句为可选语句。

4、finally子句无论try子句中是否发生异常都会被执行。常用于关闭因异常而不能释放的系统资源。finally子句为可选语句。

5、注意上述try/except A/except B/except/else/finally语句的先后顺序,不能随意调换顺序。

下面通过打开文件的案例来了解一下实现方法。

try:
print "try block"
fp = open('ip.txt', 'r')
except:
print "except block"
print "%s file,please check." % ('ip.txt')
sys.exit(1)
else:
print "else block"
ip_lst = fp.readlines()
fp.close()
finally:
print "finally block"

上述try语句在ip.txt存在和不存在两种情况下执行的结果如下图所示:

通过执行结果对比可以知道,在ip.txt文件存在情况下,执行了try/else/finally中的代码。而在ip.txt不存在情况下,执行try/except/finally中的代码。也就论证了上述说明中的第3/4点描述。案例中代码虽然针对异常进行处理,但是并没有显示关闭被打开的文件资源。修改后的代码如下:

try:
print "try block"
fp = open('ip.txt', 'r')
except:
print "except block"
print "%s file,please check." % ('ip.txt')
sys.exit(1)
else:
print "else block"
ip_lst = fp.readlines()
fp.close()
finally:
print "finally block"
fp.close()

在ip.txt文件不存在情况下执行代码,程序异常中断,提示“NameError: name 'fp' is not defined”。原因是因为try语句中定义的变量的作用域导致的。变量fp只在try语句中有效,属于局部变量。因此,为了使变量fp具有全局性。可以使用try/except语句嵌套的方式完成。修改后的代码如下:

try:
fp = open('ip.txt', 'r')
try:
ip_lst = fp.readlines()
except:
print "read %s fail" % ('ip.txt')
sys.exit()
finally:
print "call internal finall close file"
fp.close()
except:
print "%s file,please check." % ('ip.txt')
sys.exit(1)

最后,通过上述案例描述可以了解try/except/else/finally的基本用法。合理的捕获异常并进行异常处理可以有效提高代码的健壮性。

python异常处理方法的更多相关文章

  1. python pip 出现locations that require TLS/SSL异常处理方法

    python pip 出现locations that require TLS/SSL异常处理方法 转载 郑才华 发布于2018-03-24 21:41:16 阅读数 51844 收藏 展开 最近在r ...

  2. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  3. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  4. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  5. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  6. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

  7. python 异常处理函数--raise

    Python 异常处理--raise函数用法 在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称.异常名称标识出具体的类: Python异常处理是那些类的对象 ...

  8. Python异常处理回顾与总结

    1 引言 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这种错误在 ...

  9. Python异常处理与上下文管理器

    Python异常处理 异常与错误 错误 可以通过IDE或者解释器给出提示的错误opentxt('a.jpg','r') 语法层面没有问题,但是自己代码的逻辑有问题if age>18: print ...

随机推荐

  1. synchronous-request-with-websockets

    https://stackoverflow.com/questions/13417000/synchronous-request-with-websockets

  2. CS229 6.8 Neurons Networks implements of PCA ZCA and whitening

    PCA 给定一组二维数据,每列十一组样本,共45个样本点 -6.7644914e-01  -6.3089308e-01  -4.8915202e-01 ... -4.4722050e-01  -7.4 ...

  3. Echarts动态加载饼状图实例(二)

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div class="ui-contai ...

  4. git将多个commit合并成一个

    1. 查看提交历史(最近10个) git log - 2. 回到前面第十个commit,且将后面九个commit提交的内容状态改为未提交 git reset commitID(第十个commit的ID ...

  5. MVC Html辅助方法DropDownList的简单使用、连接MYSQL数据库用自定义model类接收

    附上启发链接:https://www.cnblogs.com/CreateMyself/p/5424894.html [HttpGet] public ActionResult Edit(int id ...

  6. swing 下拉菜单

    package rom; import java.lang.*; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; i ...

  7. django-chunks文件

    with open(file_save_path, 'wb') as f: for chunk in file_content.chunks(): f.write(chunk)

  8. SUSE 图形化界面/How to enable/disable AS Java Safe Mode

    vncserver 不同的用户使用不同的图形化环境变量 比如sidadm用户要启动configtools.sh 需要sidadm来启动图形化 如何将java切换成safe mode 2125707 - ...

  9. python入门-直方图

    使用的是pygal函数库 所以需要先安装 1 安装库文件 pip install pygal=1.7 2 创建骰子类 from random import randint class Die(): # ...

  10. maven 下载jar失败: Missing artifact javax.jms:jms:jar:1.1

    想从中央仓库下载, 却出现404, 原来,而中央仓库中都只有pom文件, 而没有jar包. 那就换一个 仓库吧: http://repository.jboss.com/maven2/: 终于找到了你 ...