因为某些现实的原因,在此将python面向对象这一节的博客暂时放到后面;进入了四月份后,自己的思绪伴随着春暖花开神游不止,这种神游伴随着痛苦,而与痛苦相伴的也可能是是阅历的增加与思想的趋于成熟。在豫中平原万里无云微风不燥鸟语花香的大学校园内,汇集了各路抽烟喝酒烫头的无处挥洒无处安放的青春的青年与天真无邪圆了自己大学梦的单纯学子。我前所未有的有“出一趟远门”的冲动,要去的地方还未建成高铁,如果要去只得坐将近20小时的火车前往。时间与空间将我限制在了这鱼龙混杂的象牙塔内...当然....限制我的还有金钱......
对python异常处理这一节的学习就在一个美好的傍晚开始了。
有点惺惺相惜.....
异常是程序在运行过程中,在特定条件下引发的错误。例如,打开不存在的文件、序列索引越界、不兼容类型之间执行运算等,都会产生异常。异常并非语法错误或程序逻辑错误。Python在运行程序时,首先会扫描程序检查语法错误。程序逻辑错误属于设计问题,非程序本身问题。
异常可以在程序运行过程中进行捕捉、处理,从而避免程序意外崩溃。对程序执行异常处理,是一种良好的编程习惯。
异常处理是Python的一种高级工具,当异常发生时,程序会停止当前的所有工作,跳转到异常处理部分去执行。异常既可以是程序错误引发的,也可以由代码主动触发
在其他一些程序设计语言中, goto语句提供了超级跳转功能。不管goto语句处于代码的何处,均可跳转到goto目标位置。因为goto语句打乱了程序正常流程,也使程序变得提乱,难以阅读和调试,因此受到了不少非议。但不可否认的是, goto语句提供了程序跳转的便捷功能,只不过不能滥用;
是常处理机制像一种受控的goto结构,当错误发生时,错误被捕提处理,保证程速一步有序执行,而不是意外终止,
在Pthon中,异常处理常用于处理下列情况。
常见异常类型:
Python内置的常见异常类型如下:
.
异常处理基本结构:
try:
可能发生异常的代码
except 异常类型名称:
异常处理代码
else:
没有发生异常时执行的代码
在处理异常时,将可能引发异常的代码放在try语句块中。
在except语句中指明捕捉处理的异常类型名称, except语句块中为发生指定异常时执行的代码。
else语句块中为没有发生异常时执行的代码, else部分可以省略。
try语句按照如下方式工作;
使用try..except对代码中的异常进行捕捉处理时,发生异常则执行对应的处理代码,然后执行后继的代码。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:
except (ImportError, TypeError, NameError):
pass
捕捉多个异常:
在异常处理结构中,可以使用多个except语句,以捕捉可能出现的多种异常:
修改try语句代码,引发不同的异常:
except...as 与统一处理:
可以在 except 语句中同时指定多种异常,以便使用相同的异常处理代码进行统一处理。
在 except 语句中可以使用 as 为异常类创建一个实例对象。例:
代码中的“except (ZeroDivisionError,IndexError) as yichang: ”语句指定捕捉处理除零和下标越界两种异常,发生异常时,变量 bianliang 引用异常的实例对象。通过异常的实例对象,可进一步获得异常的类名和异常信息等数据。
捕捉所有异常:
在捕捉异常时,如果except语句中没有指明异常类型,则不管发生什么类型的异常,均会执行except 语句块中的异常处理代码。例:
异常处理结构的嵌套:
python允许在异常处理结构的内部嵌套另一个异常处理结构,在发生异常时,内部没有捕捉的异常可被外层捕捉:
try...finally终止行为:
在异常处理结构中,可以使用finally定义终止行为。不管try语句是否发生异常,finally语句中的代码块都会被执行。例:
注意在交互模式下不能一次执行多条语句。
主动引发异常:
python允许代码中使用raise或者assert语句主动引发异常。
raise语句:
raise语句基本格式如下:
raise 异常类名 #创建异常类的实例对象,并引发异常
raise 异常类实例对象 #引发异常类实例对象对应的异常
raise #重新引起刚刚发生的异常
指定异常信息:
使用raise语句引发异常时,可以为异常类指定描述信息: