[转载] python基础知识三——try与except处理异常语句
参考链接: 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处理异常语句相关推荐
- python基础知识三——try与except处理异常语句
try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...
- [转载] Python基础知识:构造函数中self用法
参考链接: Python中的构造函数 在Python开发(http://www.maiziedu.com/course/python-px/)编程语言中有种函数叫构造函数,在这个函数里面有一个关键词叫 ...
- python基础知识三 字典-dict + 菜中菜
3.7字典:dict+菜中菜 1.简介 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu': ...
- Python基础知识三 输出字符
在上一篇我们已经学习了python的主程序集 那么这章我们来使用PyCharm来创建py文件,并开始学习输出字符 在python中用于输出的语句是print 1.在.py文件中写入print( ...
- python中try语句的用法和作用_python基础知识三——try与except处理异常语句
try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...
- Python复习系列:Python基础知识(三)
Python基础知识(三) Python基础知识(三) (一)循环结构和选择结构 1. 条件表达式 2. 选择结构 2.1 单分支选择结构 2.2 双分支选择结构 2.3 多分支选择结构 2.4 选择 ...
- Python基础知识总结
1. Python基础知识 1.1 Python历史 1.1.1 Python起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计 ...
- Python基础知识梳理(一)
Python基础知识梳理: 转载于:https://blog.51cto.com/10412806/2095116
- python基础知识资料-Python基础知识汇总
原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...
最新文章
- win10下Git和Tortoise安装并使用VS15保存到码云
- Uber将整体式API拆分为微服务
- 常见问题—打包压缩问题
- 单例模式 -- Java
- 2018-11-01 专栏一岁了-我为什么投身于普及用中文编程
- MyBatis框架 动态SQL
- Python+django网页设计入门(17):模板语法及应用
- Hudi on Flink 快速上手指南
- 初识MySQL数据库
- 基于WDF驱动模型使用WFP框架进行网络层数据修改
- 将人工智能(AI)应用于软件测试中
- Android中模拟点击软件的实现原理探究
- 安全帽检测漏洞系统的初步总结
- 以太坊:Etherscan 使用说明
- 谷歌浏览器获取计算机用户名,谷歌Chrome浏览器如何删除记住的账号和密码
- 野性兽王 访著名魔兽大师4K^Grubby
- 最简单的磁盘分区教程
- 最新养鱼源码-支持商城抽奖,余额宝等,支持中英文,带安装教程
- Cesium 加载非ArcgisServer发布的Arcgis切片
- fastadmin批量导入的坑——导入失败?日期转换时间戳?日期早了8小时?二三级用户没批量导入权限?
热门文章
- hibernate4 could not initialize proxy - no Session
- 2021牛客暑期多校训练营4,签到题CFIJ
- 微信h5实现分享给朋友url改变_h5微信自定义分享
- fcq java_Java设计模式百例 - 解释器模式
- java pdf 转txt文件怎么打开_使用iText将TXT文件转换为PDF(保留格式)
- linux 运行java工程师_java工程师linux命令,这篇文章就够了
- sql for循环_【赵强老师】什么是PL/SQL?
- 北风网ajax,[T8:JavaScript中利用Ajax实现客户端与服务器端通信北风网收费视频讲座.ppt...
- hget如何获取多个value_《深入微服务》之 如何给老婆解释什么是微服务的基础框架SpringBoot?...
- 数据结构—队列、循环队列、双端队列