異常處理
引發(fā)異常
在代碼的任何地方都可使用raise語(yǔ)句故意引發(fā)異常:
>>> raise IOError('This is a test!')
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module> raise IOError('This is a test!')
IOError: This is a test!
捕獲異常
ex:
def get_age():
while Ture:
try:
n = int(input('How old are you? '))
return n
except ValueError:
print('Please enter an integer value.')
處理多種異常:
def convert_to_int2(s, base):
try:
return int(s, base)
except ValueError:
return 'value error'
except TypeError:
return 'type error'
捕獲所有異常:
def convert_to_int3(s, base):
try:
return int(s, base)
except:
return 'error'
with 語(yǔ)句
為了確保即便發(fā)生異常,也將盡早執(zhí)行清理操作。
num = 1
f = open(fname)
for line in f:
print('%04d %s' % (num, line), end = ' ')
num = num + 1
這里不知道文件對(duì)象f將在何時(shí)關(guān)閉。f通常在for循環(huán)結(jié)束后關(guān)閉,但不知道準(zhǔn)確的時(shí)間。
為確保不再需要的文件盡早關(guān)閉,可使用with語(yǔ)句:
num = 1
with open(fname, 'r') as f:
for line in f:
print('%04d %s' % (num, line), end = ' ')
num = num + 1
使用with語(yǔ)句時(shí),將在for循環(huán)結(jié)束后立即執(zhí)行文件對(duì)象清理操作。