上一篇讲过我们如何捕获异常,这一篇来探讨异常,发掘异常捕获不仅仅可以是异常捕获,还可以作为if语句一样进行决策!
异常的基类:BaseException
基类下的子类(三个):
- SystemExit
(当退出python系统时出现,sys.exit()) - KeyboardInterrupt
(当程序的执行受到键盘组合键打断时出现(ctrl+c)) - Exception
其中Exception又有很多常见的异常子类,如:ValueError,TypeError等常见的
所以在平常捕获异常时如果不知道异常的名称,用:except Exception:
用异常代替if语句:
用if语句:
def divide_with_if(number, divisor):
if divisor == 0:
print("You can't divide by zero")
else:
print("{}/{}={}".format(number, divisor, number/divisor*1.0)
用异常捕获:
def divide_with_exception(number, divisor):
try:
print("{}/{}={}".format(number, divisor, number/divisor*1.0)
except ZeroDivisionError:
print("You can't divide by zero")
上面两个都可以在divisor为零时做出反应,但是,显然异常捕获更加好。至于为什么?