📅  最后修改于: 2023-12-03 14:46:44.425000             🧑  作者: Mango
在编写代码时,难免会遇到一些错误和异常。为了使程序具有更好的健壮性,我们需要对这些错误和异常进行处理。Python中提供了try-except和finally语句来进行异常处理。
try-except语句用来捕获异常。它的基本语法如下:
try:
# 执行语句
except 异常类型:
# 异常处理语句
我们在try语句块中写入可能会引发异常的代码,如果执行出现异常,则跳转到except语句块中执行相应异常处理的代码。
以下是一个例子:
try:
num = int(input('请输入一个整数:'))
print(10 / num)
except ValueError:
print('输入的不是整数!')
except ZeroDivisionError:
print('不能除以0!')
在这个例子中,我们输入一个整数,如果输入的不是整数则抛出ValueError异常,如果输入的是0则抛出ZeroDivisionError异常。如果没有异常发生,就执行try语句块中的代码,打印10除以输入值的结果。
如果发生异常,则跳转到对应的except语句块中执行相应的处理代码。
如果我们不知道会发生哪些异常,可以使用一个通用的except语句来捕获所有异常:
try:
# 执行语句
except:
# 异常处理语句
finally语句用来定义无论是否发生异常都要执行的代码块。它的基本语法如下:
try:
# 执行语句
except 异常类型:
# 异常处理语句
finally:
# 最终要执行的语句
以下是一个例子:
try:
f = open('test.txt', 'r')
f.write('Hello, world!')
except IOError:
print('无法打开文件!')
finally:
f.close()
在这个例子中,我们尝试以只读方式打开一个不存在的文件,程序抛出IOError异常,然后关闭文件。
我们可以在一个try语句块中捕获多个异常类型:
try:
# 执行语句
except (异常类型1, 异常类型2):
# 异常处理语句
我们也可以为不同的异常类型定义不同的except语句块:
try:
# 执行语句
except 异常类型1:
# 异常处理语句1
except 异常类型2:
# 异常处理语句2
我们可以在except语句块中使用as关键字来捕获异常信息:
try:
# 执行语句
except 异常类型 as 异常信息变量:
# 异常处理语句
以下是一个例子:
try:
num = int(input('请输入一个整数:'))
print(10 / num)
except ValueError as e:
print('输入的不是整数!', e)
except ZeroDivisionError as e:
print('不能除以0!', e)
在这个例子中,我们通过e变量捕获异常信息,并在异常处理语句中打印异常信息。
我们也可以在程序中手动抛出异常。Python提供了raise语句来抛出异常。
raise 异常类
以下是一个例子:
def divide(x, y):
if y == 0:
raise ZeroDivisionError('除数不能为0!')
else:
return x / y
try:
print(divide(10, 0))
except ZeroDivisionError as e:
print(e)
在这个例子中,我们定义了一个divide()函数用来实现数值相除。如果除数为0,则抛出ZeroDivisionError异常并带有一条自定义的错误信息。我们在try语句块中调用这个函数,如果抛出异常,则跳转到except语句块中打印异常信息。