文章目录

  • 1.介绍
  • 2.try expect格式
  • 3.except-note

1.介绍

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

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

2.try expect格式

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配合使用。

3.except-note

try:#raise AErrorasdas('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中有可能出现的异常类型以进行针对性的处理。

如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!


python—try-expect-else-finally的使用相关推荐

  1. python中expect的作用_expect基本使用方法

    参考: http://www.cnblogs.com/lzrabbit/p/4298794.html expect是linux系统中可以和子进程进行交互的一个命令,使用它可以做一些自动化工作.pyth ...

  2. python try expect 多个except3.7_python try小例子

    xn31415926:思路不错:|@|========================================|@|(0).建议贴一下这几个文件:|@|/svnlog/$3|@|/opt/sh ...

  3. 如何修改python代码,如何更改默认的python版本?

    I have installed python 3.2 in my mac. After I run /Applications/Python 3.2/Update Shell Profile.com ...

  4. python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

  5. ShutIt:一个基于Python的shell自动化框架

    译者注:本文通过实例简单介绍了ShutIt这个基于Python的自动化框架的使用方法.除了pexpect,我们又多了这个选择.以下是译文. ShutIt是一个易于使用的基于shell的自动化框架.它对 ...

  6. vs2019中采用C++编程使用python中的matplotlib画图库

    在写代码的过程中,有时候需要对数据进行可视化,但是对于C++来说,并没有一个像python中matplotlib一样方便使用且功能强大的绘图包.这里可以采用C++调用python,将matplotli ...

  7. Python模块之pexpect详解

    Python模块之pexpect详解(一) 一.pexpect模块介绍 二.Pexpect的安装 三.pexpect的核心组件 3.1 spawn类 3.1.1 简介 3.1.2 使用流程 3.1.3 ...

  8. python 导包 numpy_导入Python包时出错(例如Numpy)

    我正在使用一个计算群集,无法访问整个群集.因此,我尝试在本地(在我的"home"目录中)安装python的包,但是从脚本导入它们时遇到了问题.在 我试图更新我的路径和PYTHONP ...

  9. 导入Anaconda中的第三方库运行时报错:ImportError: Missing required dependencies ['pandas']

    今天碰到一个大坑,花了大半天才搞明白问题出在哪来.事情的经过是这样的:博主下午手贱把已将装好anaconda2给卸载了(同时装了2和3),然后再次安装anconda2后,却发现配置完pycharm的解 ...

  10. CS188 Proj 1

    更好的阅读体验 Project 1: Search Introduction In this project, your Pacman agent will find paths through hi ...

最新文章

  1. CQRS实践(3): Command执行结果的返回
  2. 2851 菜菜买气球
  3. matlab将求解sin隐式解,Matlab隐式符号方程求解和赋值
  4. ngRx 官方示例分析 - 4.pages
  5. Javascript构造函数的继承
  6. 解析Json的格式.
  7. Android 系统性能优化(38)---Android内存优化之二:MAT使用进阶
  8. 板邓:wordpress标签调用函数大全
  9. 主成分分析法案例_机器学习理论(五)主成分分析法
  10. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)...
  11. 【Reformer】图解Reformer:一种高效的Transformer
  12. html:optionscollection 默认值,关于html:options collection= /的使用
  13. 程序员的一天:一寸光阴一寸金
  14. python 安装PIL模块,并且查看图片大小
  15. CornerStone Unresolved conflicts exist for some items
  16. 人生本过客,何必千千结
  17. Matlab中的插值算法
  18. Erlang NIF使用
  19. Luckysheet 图表(chartmix)
  20. JavaSript入门_案例01_ 实现在页面显示北京时间

热门文章

  1. 广东地区电信官方DNS服务器
  2. 《深入理解Java虚拟机》读书笔记二
  3. EF Core 小工具
  4. Jenkins添加注册用户默认权限/Add a default authenticated user role
  5. 第二阶段冲刺第六天站立会议
  6. iBATIS使用$和#的一些理解
  7. Android怎样实现毛玻璃效果之Android高级模糊技术
  8. UVALive - 5713 最小生成树
  9. 天大 ACM 1090. City hall
  10. Javaworkers团队第五周项目总结