raise、try和exception
的调用,以及如何友好的输出异常
相关测试代码:
def boxprint(symbol,width,height):
if len(symbol) != 1:
raise Exception('Symbol must be a single character string.')
if width <= 2:
raise Exception('width must be a greater than 2.')
if height <= 2:
raise Exception('Height must be greater than 2.')
print(symbol * width)
for i in range(height - 2):
print(symbol + (' ' * (width - 2)) + symbol)
print(symbol * width)
for sym,w,h in (('*',4,4),('0',20,5),('x',1,3),('ZZ',3,5)):
try:
boxprint(sym,w,h)
except Exception as err:
print('An exception happened: ' + str(err))
raise
语句在一个函数中
,try和except
语句在调用该函数的代码中
except语句的
except Exception as err
形式,如果boxprint函数返回一个Exception对象
(即执行raise行代码),那么这条except语句就会将该对象保存在err的变量中
(即raise处返回的字符串)。Exception对象可以传递给str函数以将它转化成一个字符串,从而得到对用户友好的错误信息。
运行结果: