当 Python 试图执行无效代码时,就会抛出异常。
- raise 关键字;
- 调用 Exception 函数,同时传入出错信息描述。
raise Exception('抛出异常')
Al Sweigart 写过这样一个示例,很好地诠释了抛出异常用法。Sweigart 定义了一个 box_print() 函数,它接受一个字符、一个宽度和一个高度作为入参。然后按照指定的宽度和高度,使用该字符创建了一个小盒子的图像。最后把这个盒子打印到屏幕上。
def box_print(symbol, width, height): if len(symbol) != 1: raise Exception('Symbol must be a single character string.') if width <= 2: raise Exception('Width must be 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), ('O', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)): try: box_print(sym, w, h) except Exception as err: print('An exception happened:' + str(err))
运行结果:
该函数希望输入的字符长度大于 0,并且宽度和高度要大于 2,否则抛出异常。除此之外,还使用了以下技巧:
- 使用 * 符号来实现复制多个空格。
- 使用 for in 方法来初始化元组数据。
- 还使用了 except 语句的 except Exception as err 形式,如果 box_print() 返回一个 Exception 对象,那么这条语句就会将它保存在名为 err 的变量中。
使用 try 和 except 语句,我们可以从容使用更优雅的方式来处理错误。