错误和异常

try语句按照如下方式工作:
  1.首先,执行try子句(在关键字try和关键字except之间的语句)
  2.如果没有异常发生,忽略except子句,try子句执行后结束。
  3.如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
  4.如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。


异常处理

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print('cannot open', arg)
    else:
        print(arg, 'has', len(f.readlines()), 'lines')
        f.close()

使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到的、而except又没有捕获的异常

抛出异常

Python 使用 raise 语句抛出一个指定的异常。例如:

raise NameError('HiThere')
Traceback (most recent call last):
File "", line 1, in ?
NameError: HiThere

raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。

定义清理行为

try 语句还有另外一个可选的子句finally,它定义了无论在任何情况下都会执行的清理行为。 例如:

def divide(x, y):
        try:
            result = x / y
        except ZeroDivisionError:
            print("division by zero!")
        else:
            print("result is", result)
        finally:
            print("executing finally clause")

你可能感兴趣的:(错误和异常)