普通异常的使用
names = ['wt','gxb']
data = {}
try:
open('b.txt')
except IndexError as e:
print('there is not exist this key',e)
except Exception as e:
print('I can`t find this error!!!')
else:
print('it`s ok!!')
finally:
print('dajkdhkaj')
说明:在try-except-else-finally程序块中,只有可能产生异常的语句才会被放在try中,在try代码块成功执行时才需要运行的代码放在else代码块中,
如果try中没有异常,那么except部分将跳过,执行else中的语句。
如果try中发生异常,except代码块告诉Python,该怎么办。如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。
finally是无论是否有异常,最后都要做的一些事情,对异常处理做最后的清理工作。
== 这里补充一句,在try代码块中含有return的情况下,并不会阻碍finally的执行,但是else部分不会被执行。==
def f():
try:
print 1
return 1
except:
return 2
else:
print 3
return 3
finally:
print 0
#return 0
raise的异常
>>>raise NameError('HiThere')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: HiThere
raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。
如果你只想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。