参考链接: Python异常处理使用try,except和finally语句

try/except介绍

与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对语法进行检测,出错后发出异常消息)、数据除零错误、从未定义的变量上取值等;而try/finally语句则主要用于在无论是否发生异常情况,都需要执行一些清理工作的场合,如在通信过程中,无论通信是否发生错误,都需要在通信完成或者发生错误时关闭网络连接。尽管try/except和try/finally的作用不同,但是在编程实践中通常可以把它们组合在一起使用try/except/else/finally的形式来实现稳定性和灵活性更好的设计。

默认情况下,在程序段的执行过程中,如果没有提供try/except的处理,脚本文件执行过程中所产生的异常消息会自动发送给程序调用端,如python shell,而python shell对异常消息的默认处理则是终止程序的执行并打印具体的出错信息。这也是在python shell中执行程序错误后所出现的出错打印信息的由来。

try/except格式

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")

说明:

正常执行的程序在try下面的Normal execution block执行块中执行,在执行过程中如果发生了异常,则

中断当前在Normal execution block中的执行,跳转到对应的异常处理块中开始执行;

python

从第一个except X处开始查找,如果找到了对应的exception类型则进入其提供的exception handle中进行处理,如果没有找到则直接进入except块处进行处理。except块是可选项,如果没有提供,该exception将会被提交给python进行默认处理,处理方式则是

终止应用程序并打印提示信息;

如果在Normal execution block执行块中执行过程中没有发生任何异常,则在执行完Normal execution block后会进入else执行块中(如果存在的话)执行。

无论是否发生了异常,只要提供了finally语句,以上try/except/else/finally代码块执行的最后一步总是执行finally所对应的代码块。

需要注意的是:

1.在上面所示的完整语句中try/except/else/finally所出现的顺序必须是try-->except X-->except-->else-->finally,即所有的

except必须在else和finally之前,

else(如果有的话)必须在finally之前,而

except X必须在except之前。否则会出现语法错误。

2.对于上面所展示的try/except完整格式而言,else和finally都是可选的,而不是必须的,但是如果存在的话e

lse必须在finally之前,

finally(如果存在的话)

必须在整个语句的最后位置。

3.在上面的完整语句中,else语句的存在必须以except X或者except语句为前提,

如果在没有except语句的try block中使用else语句会引发语法错误。也就是说

else不能与try/finally配合使用。

4.except的使用要非常小心,慎用。

class AError(Exception):

"""AError---exception"""

print('AError')

try:

#raise AError

asdas('123')

except AError:

print("Get AError")

except:

print("exception")

else:

print("else")

finally:

print("finally")

print("hello wolrd")

在上面的代码中,Normal execution block中出现了语法错误,但是由于使用了except语句,该语法错误就被掩盖掉了。因此在使用try/except是最好还是要非常清楚的知道Normal execution block中有可能出现的异常类型以进行针对性的处理。

转自:http://www.cnblogs.com/windlazio/archive/2013/01/24/2874417.html

[转载] python基础知识三——try与except处理异常语句相关推荐

  1. python基础知识三——try与except处理异常语句

    try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...

  2. [转载] Python基础知识:构造函数中self用法

    参考链接: Python中的构造函数 在Python开发(http://www.maiziedu.com/course/python-px/)编程语言中有种函数叫构造函数,在这个函数里面有一个关键词叫 ...

  3. python基础知识三 字典-dict + 菜中菜

    3.7字典:dict+菜中菜 1.简介 ​ 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联 ​ 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu': ...

  4. Python基础知识三 输出字符

     在上一篇我们已经学习了python的主程序集  那么这章我们来使用PyCharm来创建py文件,并开始学习输出字符  在python中用于输出的语句是print  1.在.py文件中写入print( ...

  5. python中try语句的用法和作用_python基础知识三——try与except处理异常语句

    try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...

  6. Python复习系列:Python基础知识(三)

    Python基础知识(三) Python基础知识(三) (一)循环结构和选择结构 1. 条件表达式 2. 选择结构 2.1 单分支选择结构 2.2 双分支选择结构 2.3 多分支选择结构 2.4 选择 ...

  7. Python基础知识总结

    1. Python基础知识 1.1  Python历史 1.1.1 Python起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计 ...

  8. Python基础知识梳理(一)

    Python基础知识梳理: 转载于:https://blog.51cto.com/10412806/2095116

  9. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

最新文章

  1. win10下Git和Tortoise安装并使用VS15保存到码云
  2. Uber将整体式API拆分为微服务
  3. 常见问题—打包压缩问题
  4. 单例模式 -- Java
  5. 2018-11-01 专栏一岁了-我为什么投身于普及用中文编程
  6. MyBatis框架 动态SQL
  7. Python+django网页设计入门(17):模板语法及应用
  8. Hudi on Flink 快速上手指南
  9. 初识MySQL数据库
  10. 基于WDF驱动模型使用WFP框架进行网络层数据修改
  11. 将人工智能(AI)应用于软件测试中
  12. Android中模拟点击软件的实现原理探究
  13. 安全帽检测漏洞系统的初步总结
  14. 以太坊:Etherscan 使用说明
  15. 谷歌浏览器获取计算机用户名,谷歌Chrome浏览器如何删除记住的账号和密码
  16. 野性兽王 访著名魔兽大师4K^Grubby
  17. 最简单的磁盘分区教程
  18. 最新养鱼源码-支持商城抽奖,余额宝等,支持中英文,带安装教程
  19. Cesium 加载非ArcgisServer发布的Arcgis切片
  20. fastadmin批量导入的坑——导入失败?日期转换时间戳?日期早了8小时?二三级用户没批量导入权限?

热门文章

  1. hibernate4 could not initialize proxy - no Session
  2. 2021牛客暑期多校训练营4,签到题CFIJ
  3. 微信h5实现分享给朋友url改变_h5微信自定义分享
  4. fcq java_Java设计模式百例 - 解释器模式
  5. java pdf 转txt文件怎么打开_使用iText将TXT文件转换为PDF(保留格式)
  6. linux 运行java工程师_java工程师linux命令,这篇文章就够了
  7. sql for循环_【赵强老师】什么是PL/SQL?
  8. 北风网ajax,[T8:JavaScript中利用Ajax实现客户端与服务器端通信北风网收费视频讲座.ppt...
  9. hget如何获取多个value_《深入微服务》之 如何给老婆解释什么是微服务的基础框架SpringBoot?...
  10. 数据结构—队列、循环队列、双端队列