python中的异常

异常概念

异常是指程序中的例外,违例,影响程序正常执行的情况

异常机制是指程序出现错误后,程序的处理方法

当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理

如果程序执行过程中发生了异常,我们没有进行异常处理,那么程序就会中止执行下面的代码,但是如果我们进行了异常处理,程序会继续执行下面的代码

异常的定义

try:

<语句>#可能发生异常的代码

except<名字>:

<语句>#如果引发了‘name’异常,活的附加的异常对象

else:

<语句>#如果没有异常发生

将可能发生异常的语句,放到try语句块中,让except语句捕获异常信息处理

>>> try:

...     fp = open("D:\\file.txt","r")

...     fp.write("text")

...     fp.close()

... except IOError:

...     print("文件写入失败")

... else:

...     print("文件写入成功")

...

文件写入失败

异常工作原理

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中做标记,当异常出现并捕获后继续执行后续的代码,try子句先执行,接下来会发生什么依赖于执行时是否出现异常

1)如果当try后的语句执行时发生异常,python就跳出try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)

2)如果在try后的语句里发生了异常,却没有匹配的except子句,异常将递交到上层的try,或者到程序的最上层(这样江结束程序,并打印缺省的出错信息)。

3)如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

备注:不管执行try语句是否发生异常,都将会执行finally语句块的语句(如果有finally语句的话)

注意:捕获异常中可以再嵌套捕获异常,直到不会有新的异常发生为止

嵌套try的异常捕获实例

>>> import sys

>>> try:

...     try:

...             1/0

...     except IOError:

...             print("IOError occur")

... except Exception as e:

...     print(e)

...

division by zero

except不带任何异常类型

1)except可以不带参数,不是捕获所有的异常,如果加了特定的参数,表示捕获特定的异常,

2)except参数可以有多个,每个参数间用逗号分隔

实例:使用不带参数的try-except语句捕获所有发生的异常,但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获了所有的异常

>>> try:

...     n = 0

...     print(10/n)

... except:

...     print("做除法时,发生异常")

...

做除法时,发生异常

excepttpxce‘c‘xe带iad多种异常h‘cy类型gnil‘x

可以‘yk使用no‘ysh一个ey‘gexcepttpxce ‘ce‘x语句来处理多个类型异常,也可以针对不同的异常,分别写一个except语句,其格式如下:

try:

#可能发生异常的代码

except(Exception1[,Except2[,......ExceptN]]]):

#如果发生了任何异常列表中发生的异常,将会执行这里的代码

else:

#如果没有发生异常将会执行这里的代码

try:

#可能发生异常的代码

except Exception1:

#异常语句1

except Exception2:

#异常语句2

except Exception3:

#异常语句3

else:

#else要执行的语句

原文地址:https://www.cnblogs.com/xiaoloinzi/p/10339042.html

时间: 2024-08-29 17:27:03

python中的异常的相关文章

Python中获取异常(Exception)信息

异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序结构.如下所示 try: ... except Exception as e: ... 1.str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息 'integer division or modulo by zero' 2.repr(e) 给出较全的异常信息,包括异

Python中获取异常(try Exception)信息

异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置. 这里获取异常(Exception)信息采用try...except...程序结构.如下所示: try: ... except Exception, e: ...经典例子: import traceback print '########################################################' print "1/0 Exception Info" print '---

三十五:python中的异常

Python提供了两个非常重要的功能来处理异常和错误: 1)   异常处理try-.except 2)   断言assert 异常和断言,可以用于我们调试python程序,跟踪程序执行状态,尽快排查问题. 35.1 python中的标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 Gene

Python 中的异常种类

常用异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportError 无法引入模块或包:基本上是路径问题或名称错误 IndentationError 语法错误(的子类) :代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameE

python中的异常捕获怎么用?

http://www.2cto.com/kf/201301/184121.html http://www.w3cschool.cc/python/python-exceptions.html try: a=b b=c except Exception,e:   #except后面加异常种类 print Exception,":",e try: a=b b=c except Exception,e: print Exception,":",e

Python 中异常嵌套

在Python中,异常也可以嵌套,当内层代码出现异常时,指定异常类型与实际类型不符时,则向外传,如果与外面的指定类型符合,则异常被处理,直至最外层,运用默认处理方法进行处理,即停止程序,并抛出异常信息.如下代码: try: try: raise IndexError except TypeError: print('get handled') except SyntaxError: print('ok') 运行程序: Traceback (most recent call last): File

Python学习 之 异常

1.python中处理异常的方式 #coding:utf8 filename=raw_input("请输入你要操作的文件") try: f=open(filename) print 'hello' except IOError,msg: print "你指定的文件不存在" except NameError,msg: print "内部变量调用错误" finally: #finally try: #异常嵌套 f.close() except Nam

Python 常用的异常类型

Python中的异常类型 转自 http://blog.csdn.net/fcoolx/archive/2009/05/20/4202872.aspx 1.NameError:尝试访问一个未申明的变量>>>  vNameError: name 'v' is not defined 2.ZeroDivisionError:除数为0>>> v = 1/0ZeroDivisionError: int division or modulo by zero 3.SyntaxErr

python 中异常处理

Python中的异常由 try-except [exceptionname] 块处理,例如: def some_function(): try: # Division by zero raises an exception 10 / 0 except ZeroDivisionError: print "Oops, invalid." else: # Exception didn't occur, we're good. pass finally: # This is executed