关于异常和断言的笔记

541 查看

1. 异常

1.1异常的概念

  • 异常指的当是我们的程序决定执行一个语义学上有问题而语法无错误的命令时的情况,通常我们遇见异常时,程序通常会抛出一个异常并自动停止,然而,由于有些异常是我们在设计程序时可以预料到的(比如一个交互式程序要求使用者输入一个数字,然而使用者却输入了一个字符串),这时,我们可以自己写处理器来处理这些异常,让这些异常能被我们控制。

1.2 处理异常的方法
我们通常用try/except语句,如下列代码:

val = int(raw_input('Enter an integer: '))
print 'The square of the number you entered is', val**2

在大多数情况下,这段代码没问题,但是当用户输入的不是一个整数时,python解释器会抛出一个异常(ValueError)并终止程序,然而这种异常时可预期的,这时,我们可以利用try/block语句来解决这个问题。

while True:
    val = raw_input('Enter an integer: ')
    try:
        val = int(val)
        print 'The square of the number you entered is', val**2
        break #to exit the while loop
    except ValueError:
        print val, 'is not an integer'

在这段修改好的代码中,当用户的输入与预期不符时,我们跳到except语句,提示用户输入的不是整数,然后回到while语句,直到输入符合预期,程序执行结束。

hint:

  • 在代码中只有except:后面不加任何异常类型时,代码中出现任何一类错误都会进入except语句
  • except后可加多种类型的异常,如except(ValueError, TypeError):
  • 当代码中出现raise exceptionName(argument)时,程序会抛出与exceptionName对应的异常,并终止程序,终端上显示为exceptionName:argument

1.3 异常的作用

  • 2. 断言

  • Assertions are a useful defensive programming tool. They can be used toconfirm that the arguments to a function are of appropriate types. They are alsoa useful debugging tool. The can be used, for example, to confirm thatintermediate values have the expected values or that a function returns anacceptable value.
  • 基本形式
      assert Boolean expression, argument

    做完 MIT pset4 的收获

    当我们在一个函数中,要把另一个函数的返回值赋给一个变量时,要在函数开头把这个变量初始化