标签:情况 turn class exce 异常处理 可读性 bsp 导致 except
Python中的异常处理
一、什么是异常处理
python解释器检测到错误,触发异常(也允许程序员自己触发异常)
程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)
如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理。
二、为什么要进行异常处理
python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。
所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性。
三、异常处理的语法
1.基本语法:
python为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理
语法:
try:
被检测的代码块
except 异常类型:
try中一旦检测到异常,就执行这个位置的逻辑
2.异常类只能用来处理指定的异常情况,如果非指定异常则无法处理
# 未捕获到异常,程序直接报错
s1 = ‘hello‘
try:
int(s1)
except IndexError as e:
print e
3.多分支
s1 = ‘hello‘
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
基本用不到,有哪个程序员会写一堆的异常用来处理的。。。
4.万能异常 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常,即:
1 s1 = ‘hello‘
2 try:
3 int(s1)
4 except Exception as e:
5 print(e)
5.异常处理中的else
s1 = ‘hello‘ try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) else: print(‘try内代码块没有异常则执行我‘)#只有在没有异常类型的情况下才能执行else后的代码 finally: print(‘无论异常与否,都会执行该模块,通常是进行清理工作‘) #无论有没有异常都会执行在finally后面的代码
6.自己创造异常
try:
raise TypeError(‘类型错误‘)
except Exception as e:
print(e)
class EgonException(BaseException):
def __init__(self,msg):
self.msg=msg
def __str__(self):
return self.msg
try:
raise EgonException(‘类型错误‘)
except EgonException as e:
print(e)
7.断言
1 # assert 条件 assert 1 == 1#断定条件满足这个条件才会执行代码否则的话会抛出异常。 assert 1 == 2
8.写在最后的话
注意:
try...except应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的
这种东西加的多了,会导致你的代码可读性变差。
只有在有些异常无法预知的情况下,才应该加上try...except,其他的逻辑错误应该尽量修正
标签:情况 turn class exce 异常处理 可读性 bsp 导致 except
原文地址:http://www.cnblogs.com/niubin/p/7147386.html