异常处理部分,只是很粗略的看了一遍。
着重记录try/except块,和if/else类似,不过try是异常控制的,一旦发生异常,跳过其他未执行的语句,直接执行except块中的内容。
知道捕获多种异常的方法,分别处理不同异常的方法,捕获所有异常的方法。
finally语句:无论程序是否发生异常,finally中的内容都会被执行。通常把关闭文件操作放到finally中。
with语句:确保不再使用的文件尽早关闭,可以使用with语句。
下面是示例代码:
# 下面函数在运行时会抛出ValueError
def get_age():
n = int('s')
return n
# 将可能发生异常的语句放到try中
def get_age_1():
try:
n = int(input('How old are u?'))
return n
except ValueError:
print('Please enter an integer value!')
# 捕获多种异常
def convert_to_int(s,base):
try:
return int(s,base)
except (ValueError,TypeError):
return 'error'
# 若果要分别处理不同异常,可以写多个except子句
def convert_to_int1(s,base):
try:
return int(s,base)
except ValueError:
return 'ValueError'
except TypeError:
return 'TypeError'
# 捕获所有异常,如果在except子句中没有指定异常,就会捕获所有异常
def convert_to_int2(s,base):
try:
return int(s,base)
except:
return 'error'
# finally语句,无论是否发生异常,finally中的语句都会执行
# 通常把文件关闭操作放在finally中,这样无论程序是否异常,都能确保文件被关闭
def open_file(fname):
try:
f = open(fname,'w')
except:
return 'error'
finally:
f.close()
# with语句
f = open(fname)
for line in f:
print(line,end='')
# 上面代码不知道对象f将在什么时间关闭,通常for循环执行完毕,文件就会被关闭,但是我们不知道准确时间
# 使用with语句,让for循环执行完,就立刻关闭f
with open(fname) as f:
for lint in f:
print(line,end'')