当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此,执行完毕。

python的try语句有两种风格

  1. 处理异常(try/except/else)
  2. 种是无论是否发生异常都将执行最后的代码(try/finally)

try/except/else风格

try:<语句> #运行别的代码
except <名字>: <语句> #如果在try部份引发了'name'异常
except <名字>,<数据>:<语句> #如果引发了'name'异常,获得附加的数据
else:<语句> #如果没有异常发生

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

try/finally风格

try:<语句>
finally:<语句> #退出try时总会执行finally语句

python总会执行finally子句,无论try子句执行时是否发一异常。
1、如果没有发生异常,python运行try子句,然后是finally子句,然后继续。
2、如果在try子句发生了异常,python就会回来执行finally子句,然后把异常递交给上层try,控制流不会通过整个try语句

当你想无论是否发生异常都确保执行某些代码时,try/finally是有用的。

这个在打开文件的时候有用 finally总是在最后close()文件

try语句子句形式表
except: 捕获所有异常
except name: 只捕获特定的异常
except name,value: 捕获异常和它的附加数据(将异常的信息保存到value,)
except (name1,name2): 捕获任何列出的异常
else: 如果没有异常
finally: 总是执行

try:f = open('file.txt')
except IOError as e:print e
else:print 'wrong'
[Errno 2] No such file or directory: 'file.txt'

try/except/finally:

#1:如果x没有异常,执行z,i
#2:如果x有异常,
#一:如果except捕捉到异常则执行y,i
#二:没捕捉到,执行i,然后返回内置异常处理 try: x
except(name): y
else:z
finally:i

try except python_Python的“异常”处理——try语句相关推荐

  1. dup_val_on_index_oracle学习笔记(十六) PL/SQL 异常和goto语句

    PL/SQL 异常和goto语句 异常 预定义异常 oracle常见预定义异常: 错误号 异常错误信息名称 说明 ORA-0001 DUP_VAL_ON_INDEX 试图破坏一个唯一性限制 ORA-0 ...

  2. java try catch嵌套_解析Java中未被捕获的异常以及try语句的嵌套使用

    Java未被捕获的异常 在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式. class Exc0 { public st ...

  3. java多层catch语句_Java异常之catch语句块

    今天在阅读项目代码时看到如下奇怪的代码,以为是竖线 | 可以作为多类型赋值,经过网上搜索才知道是Java SE 7新增的功能:一个catch捕获多种类型的异常.原文是Java官方的文档,现翻译如下.红 ...

  4. 用友U8清除站点异常任务SQL语句

    清除站点异常任务 use ufsystem delete from ua_task where ctaskid in(select ctaskid from ua_tasklog where task ...

  5. ip地址异常判定python_python检测异常ip,并查询ip详细信息

    #!/usr/local/bin/python3 # coding:utf-8 import string, subprocess, send_mail from time import strfti ...

  6. 转:delphi异常捕获try except语句 和 try finally语句用法

    转:http://www.java123.net/v/936977.html      2015-06-24 09:27:48 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来 ...

  7. try~Catch语句中异常的处理过程

    [2014/10/12 21:40]文章待续~ 1.函数自身捕获处理异常的情况 以下的样例介绍了try~catch语句中出现异常时语句的运行顺序: package month10;import jav ...

  8. java异常捕获常使用的语句_要点Java14 捕获异常

    Tutorial 在讲 try/catch 捕获异常语句之前, 先要讲讲 Exceptions 异常. 每次发生错误时都会抛出异常. 示例: ArrayIndexOutOfBounds 数组越界错误异 ...

  9. C++ 异常,标准异常类,自定义异常类,throw,try,catch语句

    要学习异常,首先就要学习throw和try,catch语句: C++中try catch语句用法有非常灵活,有许多种组合: 这里简单介绍以下最基本的用法: 1. 格式 try{ ... } catch ...

最新文章

  1. python进阶书籍的推荐-Python 入门到进阶书籍推荐
  2. 1.20 Java8新特性:Effectively final
  3. 平安iq测试没通过的话影响入职吗_从外包测试到阿里巴巴,一位三本女生逆袭之路...
  4. Java-大集合拆分为指定大小的小集合
  5. $.AjaxFileUpload is not a function
  6. Android逆向笔记-查看app的log打印(含调试方式打开)
  7. 【转】使用手势对UIImageView进行缩放、旋转和移动
  8. WebService之Axis2 (3):使用services.xml文件发布WebService
  9. 让人死去活来的cocos2d-x安卓开发环境搭建(windows+eclipse+ndk 不用cygwin)【上图】
  10. 数字系统设计与制作报告——双向流水灯控制电路
  11. 屏幕真伪测试软件,如何检测电视屏幕真伪4K、坏点漏光?两款工具一键识别!...
  12. 扩容卡检测(win下,能作为参考)
  13. 人工客服——图灵机器人教程
  14. ml5.js入门二(介绍)+featureExtractor特征提取器
  15. 嵌入式系统开发10——STM32串口通信
  16. 使用html打开电脑前置摄像头并拍照
  17. 性能优化,进无止境---内存篇(上)
  18. 【直流无刷马达的调速方法
  19. android 9.0 app应用安装白名单
  20. Python开发系列课程(15) - Python参考书籍

热门文章

  1. unity--------------------四元数的旋转与原理
  2. GitHub创建个人主页
  3. 《Spring技术内幕》学习笔记17——Spring HTTP调用器实现远程调用
  4. bzoj1113[Poi2008]海报PLA
  5. 合并模块和安装文件的区别
  6. 添加Zabbix Agent客户端,并解决报错。
  7. 【Oracle】创建用户
  8. 缓存穿透、缓存雪崩、缓存击穿的原因及解决方案
  9. 执行cmd命令时:因为在此系统上禁止运行脚本的解决方法
  10. nginx+thinkphp下解决不支持pathinfo模式以及存在的各种404,500问题