python抛出异常如何操作?

Python013

python抛出异常如何操作?,第1张

8.4. 抛出异常

raise 语句允许程序员强制抛出一个指定的异常。例如:

>>>raise NameError('HiThere')

Traceback (most recent call last):

File "

", 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 "

", line 2, in ?

NameError: HiThere

在 Python 中,raise 语句用于抛出一个异常。在 raise 语句之前的 print 语句会在抛出异常之前执行,如果你在使用 raise 语句时发现 print 语句没有显示,那么可能是因为 raise 语句之后的代码没有被执行。

举个例子,如果你有如下代码:

def foo():

print("before raise")

raise Exception("error")

print("after raise")

foo()

那么在执行 foo 函数时,会先打印 "before raise",然后抛出 Exception 异常,因此 "after raise" 不会被打印出来。

如果你希望在抛出异常之前打印出相应的信息,建议使用 try-except 语句来捕获异常,在 except 块中打印信息。这样,就可以保证在抛出异常之前,所有的代码都会被执行。

例如,可以使用如下代码来捕获异常:

def foo():

try:

print("before raise")

raise Exception("error")

print("after raise")

except Exception as e:

print("error:", e)

foo()

在这种情况下,执行 foo 函数时会先打印 "before raise",然后抛出 Exception 异常,最后打印 "error: error"。