话本小说网 > 现代小说 > Python入门级教程
本书标签: 现代 

finally与异常抛出

Python入门级教程

finally

为了确保某些代码运行,不管发生什么错误,都可以使用最终语句。最后一个语句被放置在一个尝试try/except语句的底部。最后语句中的代码总是在try中执行代码后运行,也可能在except中执行。

try:

print("Hello")

print(1 / 0)

except ZeroDivisionError:

print("0不能做分母")

finally:

print("这条代码运行是必须的")

结果:

>>>

Hello

0不能做分母

这条代码运行是必须的

>>>

这段代码的输出结果是:

try:

print(1)

except:

print(2)

finally:

print(3)

A1 3

B1

C1 2 3

D3

finally

finally 语句中的代码即使在前面一个块中未发生异常时也会运行。

try:

print(1)

print(10 / 0)

except ZeroDivisionError:

print(var)

finally:

print("最终被执行")

结果:

>>>

1

最终被执行

ZeroDivisionError: division by zero

During handling of the above exception, another exception occurred

NameError: name 'var' is not defined

(在处理上面错误时候,另一个错误发生,

名称错误:没有var 没有定义过)

>>>

抛出异常

可以使用 raise语句来抛出异常。

print(1)

raise ValueError

print(2)

结果

>>>

1

ValueError

>>>

您需要指定引发异常的类型。

在执行此代码时发生哪些错误?

try:

print(1 / 0)

except ZeroDivisionError:

raise ValueError

AValueError

BZeroDivisionError

CZeroDivisionError and ValueError

Dnone

异常

可以用给出详细信息的参数来引发异常。

例如:

name = "123"

raise NameError("Invalid name!")

结果:

>>>

NameError: Invalid name!

>>>

如果输入为负值,填充以引发ValueError异常。

num = input(":")

if float(num)

0:

ValueError("负数!")

异常

在type/except块中,可以使用不带参数的提升语句重新引发任何异常。

例如:

try:

num = 5 / 0

except:

print("一个错误发生")

raise

结果:

>>>

一个错误发生

ZeroDivisionError: division by zero

>>>

可以在 except语句外用 raise语句吗?

A,No

B,Yes

上一章 异常及处理 Python入门级教程最新章节 下一章 Assertions断点与打开文件