1,异常的特点:异常发生之后,异常之后的代码就不执行了
2,什么是异常处理
python解释器检测到错误,触发异常(也允许程序员自己触发异常),程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关),如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理
3,异常处理的意义
python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件.所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性.
4,★异常处理方法:
①使用 if 进行异常处理
总结:
1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的相同类型的错误你需要写重复的if来进行处理.
2.在你的程序中频繁的写与程序本身无关,与异常处理有关的if,会使得你的代码可读性极其的差
3.if是可以解决异常的,只是存在1,2的问题,所以,千万不要妄下定论if不能用来异常处理.
②python 为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理
part1: 基本语法
try:
被检测的代码块
except 异常类型:
try中一旦检测到异常,就执行这个位置的逻辑
part2: 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理.
# 未捕获到异常,程序直接报错
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print e
part3: 多分支
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
part4: 万能异常 在 python 的异常中,有一个万能异常:Exception,可以捕获任意异常
s1 = 'hello'
try:
int(s1)
except Exception as e:
print(e)
part5: 异常的其他语法
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
#except Exception as e:
# print(e)
else:
print('try内代码块没有异常则执行我')
finally:
print('无论异常与否,都会执行该模块,通常是进行清理工作')
part6: 主动触发异常
try:
raise TypeError('类型错误')
except Exception as e:
print(e)
part7: 自定义异常
class YangException(BaseException):
def __init__(self,msg):
self.msg=msg
def __str__(self):
return self.msg
try:
raise YangException('类型错误')
except YangException as e:
print(e)
part8: 断言
# assert 条件
assert 1 == 1
assert 1 == 2
part9:try..except 的方式比较 if 的方式的好处
把错误处理和真正的工作分开来
代码更易组织,更清晰,复杂的工作任务更容易实现;
毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;
异常处理
来源: http://www.bubuko.com/infodetail-2470282.html