python有五种异常处理机制,分别是

1、默认异常处理器。

如果我们没有对异常进行任何预防,那么程序在执行过程中发生异常就会中断程序,调用python默认的异常处理器,并在终端输出异常信息,如图所示,第二行代码发生异常,第三行代码不会被执行

2、try....except....

程序执行到第2句时发现try语句,进入try语句块执行,发生异常,回到try语句层,寻找后面是否有except语句,找到except语句后,会调用自定义的异常处理器,except将异常处理完毕后,程序继续往下执行,即执行except下的语句,try语句结束后,继续向下执行print(end...)语句

3、try....except....finally

finally语句表示无论异常是否发生,finally中的语句都要执行。

4、try...finally....

finally语句表示,无论异常发生与否,finally中的语句都要执行,但是由于没有except处理器,finally执行完毕后程序便中断,这种情况下,最后一个

print语句不会执行,倒数第二个(finally里的print)语句会执行。如果try语句中没有异常,那么最后一个print会执行

5、assert

assert语句先判断assert后面紧跟的语句是True还是False,如果是True则继续往下执行语句,如果是False则中断程序,调用默认的异常处理器,

同时输出assert False语句逗号后面的提示信息。程序中断提示error,后面的语句不执行。

5、with...as

我们平时在使用类似文件的流对象时,使用完毕后要调用close方法关闭,很麻烦,这里with...as语句提供了一个非常方便的替代方法,open打开文件后将返回的文件流对象赋值给f,然后在with语句块中使用,with语句块完毕之后,会自动关闭文件

如果with语句发生异常,会调用默认的异常处理器,文件也会正常关闭,但后面的print语句不执行

python异常处理机制的更多相关文章

  1. Python基础入门(7)- Python异常处理机制

    1.初识异常 1.1.什么是异常与异常处理 异常就是错误 异常会导致程序崩溃并停止运行 能监控并捕获异常,将异常部位的程序进行修理使得程序继续正常运行 1.2.异常的语法 1 # coding:utf ...

  2. Python异常处理机制、调试、测试

    类似于Java的try..catch..finally Java的为try_except_finally try: print('try...') r = / print('result:', r) ...

  3. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

  4. Python异常处理回顾与总结

    1 引言 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这种错误在 ...

  5. Python笔记(四):异常处理机制与 open()

    (一)  异常处理机制概述 就像日常生活中会遇到各种意外情况一样(例如:你可能考虑过如果中了500w该怎么做),代码运行过程中也会遇到这种意外情况,python提供了这么一种机制,处理意外情况(就像如 ...

  6. Python 异常处理与反射机制

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  7. python的异常处理机制

    异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...

  8. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  9. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

随机推荐

  1. SV coverage

    covergroup是对coverage model的一种包装,每个covergroup可以包含: 1) sync event来触发采样, 2) 很多coverpoint, 3) cross cove ...

  2. 4.Python3运算符

    4.1算数运算符(以下假设变量a为10,变量b为21) 实例操作: print(3 + 5) #数字3与5相加 print(3 - 5) #数字3与5相减 print(3 * 5) #数字3与5相乘 ...

  3. bzoj4195(并查集+离散化)

    题目大意:给出n个变量互相的相等或不等关系,求这些关系是否矛盾 思路:把相等的变量加入并查集,不等的查询是否合法 eg:数据很大,离散化(然而我用的是map) #include<stdio.h& ...

  4. 裸奔的bootloader单步调试

    2011-03-01 23:25:22 目地:更清晰的了解bootloader的结构及功能.为移植U-boot打基础. 以前只知道大概,今天利用IAR调试工具,看着汇编代码,看着寄存器,看着内存.来单 ...

  5. SQL语句汇总(二)——数据修改、数据查询

    SQL语句第二篇,不说废话直接开始吧. 首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述. 添加新数据: INSERT INTO <表名> (<列名列表>) VA ...

  6. Java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed

    在使用response重定向的时候,报以下错误:Java.lang.IllegalStateException: Cannot call sendRedirect() after the respon ...

  7. bzoj 1835 base 基站选址 - 动态规划 - 线段树

    题目传送门 需要高级权限的传送门 题目大意 有$n$个村庄坐落在一条直线上,第$i \ \ \ (i>1)$个村庄距离第$1$个村庄的距离为$D_i$.需要在这些村庄中建立不超过$K$个通讯基站 ...

  8. Learning-Python【7】:Python数据类型(3)—— 字典、集合

    一.字典类型 1.用途:用来存放多个不同种类的值 2.定义方式:在{ }内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来描述value的,所以ke ...

  9. 【Visual Studio 扩展工具】如何在ComponentOneFlexGrid树中显示RadioButton

    概述 在ComponentOne Enterprise .NET控件集中,FlexGrid表格控件是用户使用频率最高的控件之一.它是一个功能强大的数据管理工具,轻盈且灵动,以分层的形式展示数据(数据呈 ...

  10. 一些有趣的 js 包

    https://github.com/octalmage/robotjs Node.js桌面自动化.控制鼠标,键盘和屏幕. http://robotjs.io