以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话
2013-7-26 19:00 学习笔记
1,Python中的异常起着错误处理、事件通知、特殊情况处理、终止行为、非常规流程控制等作用。用法如下:
x = [1,2,3]
try:
print x[3]
except IndexError:
print 'IndexError'
print 'end...'
运行结果如下:
IndexError
end...
try语句中也可以包括finally代码块,finally中的代码无论是否发生异常都会执行。例如:
x = [1,2,3]
try:
print x[3]
except IndexError:
print 'IndexError'
finally:
print 'finally...'
print 'end...'
运行结果为:
IndexError
finally...
end...
x = [1,2,3]
try:
print x[2]
except IndexError:
print 'IndexError'
else:
print 'NoError'
finally:
print 'finally...'
print 'end...'
输出结果为:
3
NoError
finally...
end...
4,try语句是可以嵌套的。
5,raise语句用于手动抛出异常,可以是内置异常,也可以是自定义异常。Python使用类自定义异常。例如:
class MyException:
pass
try:
raise MyException
except MyException:
print 'Error1'
输出结果为:
Error1
try:
x = 1
assert x==0
except AssertionError:
print 'AssertionError'
输出结果为:
AssertionError
8,用户自定义的异常类最好是继承自Exception内置异常(但不是必须的)。StandardError是Python所有内置异常的超类。因此实际编程中,可以先捕获StandardErro异常,再捕获用户自定义异常。例如:
class MyException(Exception):
pass
try:
print x
except StandardError:
print 'StandardError'
except MyException:
print 'MyException'
class MyException(Exception):
def __init__(self, x, y):
self.X = x
self.Y = y
try:
raise MyException('error x', 'error y')
except StandardError:
print 'StandardError'
except MyException, e:
print 'MyException: ',e.X,e.Y
输出结果为:
MyException: error x error y
class MyException(Exception):
def __init__(self, x, y):
self.X = x
self.Y = y
try:
raise MyException, ('error x', 'error y')
except StandardError:
print 'StandardError'
except MyException, e:
print 'MyException: ',e.X,e.Y
结果与上面相同。