异常,其实就是一个类的问题

上一篇讲过我们如何捕获异常,这一篇来探讨异常,发掘异常捕获不仅仅可以是异常捕获,还可以作为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为零时做出反应,但是,显然异常捕获更加好。至于为什么?

猜你喜欢

转载自blog.csdn.net/killeri/article/details/81413361