【笔记】 python学习笔记 关于异常
本帖最后由 SuNu11 于 2016-8-31 13:58 编辑一、简述异常概念与常见错误类
二、try...except语句与实例描述
三、引发异常与实例描述
四、try..finally、try...except语句介绍
一、简述异常概念与常见错误类
异常:是指程序中的例外,违例情况。异常机制是指程序出现错误后,程序的处理方法。当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。
Exception类是常用的异常类,该类包括StandardError,StopIteration, GeneratorExit, Warning等异常类。
StandardError类是python中的错误异常,如果程序上出现逻辑错误, 将引发该异常。StandardError类是所有内敛异常的基类,放置在默认的命名空间中,因此使用IOEroor,
EOFError, ImportError等类,不需要导入exception模块。
StopIteration类判断循环是否执行到尾部,如果循环到尾部,则抛出该异常。
GeneratorExit类是由Generator函数引发的异常,当调用close()时引发该异常。
Warning类表示程序中的代码引起的警告。
python中的异常使用继承结构创建,可以在异常处理程序中捕获基类异常,也可以捕获各种子类异常,python中使用try...except语句捕获异常,异常子句定义在try子句后面。
错误:SyntaxError 错误位置 错误处理器
二、try...except语句与实例描述try..except 使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
import sys
try:
s = raw_input('something:') 所有可能引发错误的语句
except EOFError:
print '错误提示语句'
sys.exit() 退出程序
except: 如果try里面的语句无法正确执行,那么就执行except里面的语句,这里面可以是错误信息或者其他的可执行语句
print '错误语句'
print 'Done'
可以加finally:不管是否有异常,都要执行某段代码
else:如果try里面的语句可以正常执行,那么就执行else里面的语句(相当于程序没有碰到致命性错误)
三、引发异常与实例描述
引发异常
可以使用raise语句引发异常。还得指明错误/异常的名称和伴随异常触发的异常对象。可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。
class asdException (Exception): 定义一个异常类,自定义的异常类必须是Exception或者Error的子类!
'''A user-defined exception class.'''
def __init__(self,length,atleast): #调用基类的__init__进行初始化
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
s = raw_input('Enter something:')
if len(s) < 3: 输入长度小于三
raise asdException(len(s),3) 使用raise语句来引发一个异常一旦执行了raise语句,raise后面的语句将不能执行。
except EOFError: 捕获EOFError 异常
print '\nWhy did you do an EOF on me?'
except asdException, x: x为asdException 的具体实例
print 'ShortInputException: The input was of length %d,was expecting at least %d' % (x.length,x.atleast)
else: 只有在try中没有异常才执行else语句
print 'No exception was raised.'
四、try..finally、try...except语句介绍
try..finally、try...except用于处理问题语句,捕获可能出现的异常。try子句中的代码块放置可能出现异常的语句,except子句中的代码块处理异常。在try下可以同时使用except和finally块,同时使用必须把一个嵌入另外一个。
-Zing- 发表于 2016-8-31 14:34
哦。不。你理解错了。笔记你不可能只发这一个吧, 应该有好几个笔记。http://www.52pojie.cn/thread-391498 ...
我明白你的意思了,我的笔记没发帖,这个是觉得挺难记住就发了一下,其他的都本地保存了~~
做教程现在还为时过早,等学熟练了会考虑弄一套的 -Zing- 发表于 2016-8-31 11:53
应该有一个汇总。目录
嗯,谢谢,第一次写这个 马上改 mark一下,感谢分享{:301_997:} 有机会学学,这个不错 -Zing- 发表于 2016-9-2 09:19
像这样的笔记我都是记在博客园这样的论坛里。
嗯,下次会放有意义的东西
页:
[1]
2