欢迎访问宙启技术站
智能推送

Python异常处理函数的使用指南:try、except和finally

发布时间:2023-06-09 17:51:46

Python是一门非常灵活和强大的编程语言,但是在编写程序的过程中难免会出现各种异常错误。为了避免这些错误导致程序崩溃,Python提供了异常处理机制。

异常(Exception)是指程序在正常运行过程中发生的错误,例如:除以0,操作不存在的文件或目录等。Python的异常处理机制通过try、except和finally三个关键字来实现。

1. try-except语句块

try-except语句块的作用是:尝试执行一段代码,如果该代码执行出错,则捕获异常,并且执行指定的异常处理代码。

语法格式如下:

try:
    # 尝试执行的代码块
except ExceptionType:
    # 发生异常时执行的代码块

其中,try和except关键字是必须的,ExceptionType代表需要捕获的异常类型。如果代码块中的异常类型和需要捕获的异常类型匹配,则执行except语句块中的代码。

下面是一个简单的例子:

try:
    num1 = 10
    num2 = 0
    result = num1 / num2
except ZeroDivisionError:
    print("除数不能为0")

在上面的代码中,num1和num2分别赋值为10和0,执行result = num1 / num2这一行代码时会触发ZeroDivisionError异常。根据异常处理机制,会执行except语句块中的代码,打印出“除数不能为0”。

2. 多个except语句块

如果代码中可能会出现多个不同类型的异常,可以使用多个except语句块,每个块捕获一种异常类型。

语法格式如下:

try:
    # 尝试执行的代码块
except ExceptionType1:
    # 发生ExceptionType1异常时执行的代码块
except ExceptionType2:
    # 发生ExceptionType2异常时执行的代码块

其中,ExceptionType1和ExceptionType2代表需要捕获的异常类型,可以是任何Python标准异常类或自定义异常类。如果代码块中的异常类型和需要捕获的异常类型匹配,则执行对应的except语句块中的代码。

下面是一个例子:

try:
    num1 = 10
    num2 = "hello"
    result = num1 / num2
except ZeroDivisionError:
    print("除数不能为0")
except TypeError:
    print("数字不能除以字符串")

在上面的代码中,num1赋值为10,num2赋值为字符串"hello",执行result = num1 / num2这一行代码时会触发TypeError异常。根据异常处理机制,会执行第二个except语句块中的代码,打印出“数字不能除以字符串”。

3. else语句块

else语句块的作用是:如果try语句块中的代码没有发生任何异常,则执行else语句块中的代码。

语法格式如下:

try:
    # 尝试执行的代码块
except ExceptionType:
    # 发生异常时执行的代码块
else:
    # try语句块中没有异常时执行的代码块

下面是一个例子:

try:
    num1 = 10
    num2 = 2
    result = num1 / num2
except ZeroDivisionError:
    print("除数不能为0")
else:
    print("结果是:" + str(result))

在上面的代码中,num1赋值为10,num2赋值为2,执行result = num1 / num2这一行代码时不会触发任何异常,根据异常处理机制,会执行else语句块中的代码,打印出“结果是:5.0”。

4. finally语句块

finally语句块的作用是:无论try语句块是否发生异常,都执行finally语句块中的代码。

语法格式如下:

try:
    # 尝试执行的代码块
except ExceptionType:
    # 发生异常时执行的代码块
finally:
    # 无论try语句块是否发生异常都会执行的代码块

下面是一个例子:

try:
    f = open("test.txt", "r")
    f.read()
except FileNotFoundError:
    print("文件不存在")
finally:
    f.close()

在上面的代码中,程序尝试打开文件test.txt并读取文件内容。如果文件不存在,则会触发FileNotFoundError异常。无论是否出现异常,程序都需要关闭文件,因此在finally语句块中调用f.close()方法来关闭文件。

总结

异常处理机制是Python编程中非常重要的一个特性,通过try、except和finally等关键字可以有效处理代码中发生的各种异常。在实际编程中,需要根据不同的情况选择不同的异常处理方法,让程序在发生异常时也能够正常运行。