好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 SuNu11 于 2016-8-31 13:58 编辑
一、简述异常概念与常见错误类
二、try...except语句与实例描述
三、引发异常与实例描述
四、try..finally、try...except语句介绍
一、简述异常概念与常见错误类
异常:是指程序中的例外,违例情况。异常机制是指程序出现错误后,程序的处理方法。当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。
[size=0.8]Exception类是常用的异常类,该类包括StandardError,StopIteration, GeneratorExit, Warning等异常类。
[size=0.8]StandardError类是python中的错误异常,如果程序上出现逻辑错误, 将引发该异常。StandardError类是所有内敛异常的基类,放置在默认的命名空间中,因此使用IOEroor,
[size=0.8]EOFError, ImportError等类,不需要导入exception模块。
[size=0.8]StopIteration类判断循环是否执行到尾部,如果循环到尾部,则抛出该异常。
[size=0.8]GeneratorExit类是由Generator函数引发的异常,当调用close()时引发该异常。
[size=0.8]Warning类表示程序中的代码引起的警告。
[size=0.8]python中的异常使用继承结构创建,可以在异常处理程序中捕获基类异常,也可以捕获各种子类异常,python中使用try...except语句捕获异常,异常子句定义在try子句后面。
[size=0.8]错误: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: [size=0.8] 只有在try中没有异常才执行else语句
print 'No exception was raised.'
四、try..finally、try...except语句介绍
try..finally、try...except用于处理问题语句,捕获可能出现的异常。try子句中的代码块放置可能出现异常的语句,except子句中的代码块处理异常。在try下可以同时使用except和finally块,同时使用必须把一个嵌入另外一个。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|