📜  Python异常处理使用try,except和finally语句(1)

📅  最后修改于: 2023-12-03 14:46:44.425000             🧑  作者: Mango

Python异常处理使用try-except和finally语句

在编写代码时,难免会遇到一些错误和异常。为了使程序具有更好的健壮性,我们需要对这些错误和异常进行处理。Python中提供了try-except和finally语句来进行异常处理。

try-except语句

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语句

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语句块中打印异常信息。