异常是指程序中的例外、违例情况,比如序列的下标越界、打开不存在的文件、空引用异常等。通过捕获异常并进行正确处理,可以提高程序的健壮性。如果没有代码处理异常,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. U3D学习09-物体简单控制及视角观察

    一.Character Control非刚体 1.场景初始化,注意调整CC的轴心,不需要碰撞,且删除CC子物体的碰撞.2.移动:       获取X,Z轴变化,定义变量h,v:        定义移动 ...

  2. elasticsearch 外网访问9200端口访问

    可以访问127.0.0.1:9200,但不能访问 公网IP:9200 后面ip就是127.0.0.1的局域网ip,如何解决? 修改配置文件 config/elasticsearch.yml netwo ...

  3. AS导入项目报错:Plugin with id 'com.android.application' not found.

    从github或第三方Demo中获取的项目导入到AndroidStudio中报错Plugin with id 'com.android.application' not found.:今天导入一个讯飞 ...

  4. 用jQuery实现简单的简单的轮播图

    图片来源 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  5. 安全测试8_Web安全实战3(命令注入)

    1.命令注入的概念:命令指的是操作系统的命令,注入表示通过WEB程序在服务器上拼接系统命令. 2.命令注入实战: 首先我们先打开DVWA,将安全级别调至为low级别,忘记了的可以参考之前的章节进行设置 ...

  6. Ubantu下安装jdk 教程

    ubuntu 安装jdk 的两种方式: 这篇帖子,有些地方,写的有点问题.我只能按照记忆中的印象,修改一下. 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通 ...

  7. MySQL C API(23)

    C API 提供了对 MySQL c/s 模型的底层访问.C API 代码在 mysqlclient 库中实现.可以从该库中引用到的变量及含义: 环境变量 含义 MYSQL_UNIX_PORT 本地连 ...

  8. android开发 写一个自定义形状的按键

    步骤: 1.在drawable 文件夹中创建一个xml布局文件. 2.修改布局文件 3.在需要使用背景的按键中导入布局. 创建布局文件: 修改布局文件: <?xml version=" ...

  9. SAP HANA HDBSQL命令

    1.登录: window操作系统下面: 打开C:\Program Files\SAP\hdbclient\hdbsql.exe \c 连接数据库  connect的缩写 HANA hostname:  ...

  10. 好久没玩docker了,温下手

    好久没玩docker了,温下手 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum i ...