Python3教程
作者: 时海 crazybean
异常处理

Python使用被称为异常 的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继

续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

使用try-except 代码块

当你认为可能发生了错误时,可编写一个try-except 代码块来处理可能引发的异常。你让Python尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。

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()

抛出异常

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

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

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

如果你只想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。

>>>try:
       raise NameError('HiThere')
   except NameError:
       print('An exception flew by!')
       raise
 
An exception flew by!
Traceback (most recent call last):
 File "<stdin>", line 2, in ?
NameError: HiThere
标签: 异常、raise、nameerror、子句、hithere
一个创业中的苦逼程序员
  • 回复
隐藏