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

使用Python函数进行异常处理:try和except语句

发布时间:2023-06-23 18:36:54

Python是一种很流行的编程语言,它有许多强大的功能,使之成为了非常多人使用的首选语言之一。异常处理是Python程序中的一种非常重要的技能,因为在代码中,难免会遇到错误和异常情况。Python提供了多种方式来监测和处理这些问题中的异常,其中最常用的方式是使用try和except语句。

1.try和except语句

try和except语句被用于在Python程序中捕捉和处理异常。这些语句的基本结构如下:

try:

    代码块

except 错误类型:

    异常处理程序

在try语句代码块执行期间,如果出现了一个错误或异常,该语句会立即跳转到except语句并调用指定的异常处理程序。在处理完异常后,程序将继续向下执行,而不是终止运行。

2.捕捉异常

在Python中,可以使用except语句来捕捉并处理不同类型的异常。以下是一些常见的异常:

a. AttributeError:当试图访问未定义的对象属性时引发

b. IOError:文件读取或写入失败导致出现的异常

c. ZeroDivisionError:当试图将一个数除以0时引发

d. TypeError:当两个不同类型的对象建立连接时引发

e. ValueError:尝试对错误数据类型执行操作时出现的异常

当try语句执行期间出现异常时,Python将在当前作用域内查找 个能够处理该异常类型的except语句,并调用其中的异常处理程序。如果找不到该异常类型的处理程序,则该异常将被传递给上一层调用函数,直到找到含有该异常类型处理程序为止。如果没有找到任何处理程序,则程序将在控制台上打印出错误信息。

3.处理多个异常

在Python中,except子句可以包含多个异常类型,以便同时处理多种类型的异常。可以使用元组或者引入多个except语句的方式:

#使用元组

try:

    a = 100 / 0

except (ZeroDivisionError, NameError, ValueError):

    print("Error Occurred")

#使用多个except语句

try:

    f = open('sample.txt', 'r')

    line = f.readline()

    num = int(line.strip())

except IOError:

    print("File not found or path is incorrect")

except ValueError:

    print("Could not convert data to an integer")

except:

    print("Unexpected exception")

4.使用else子句

除了try和except语句以外,Python还提供了一个可选的else子句,用于在try语句块执行后(未发生任何异常)执行一些代码。else代码块只有在try块中没有发生异常时才会被执行。

try:

    f = open("test.txt")

    line = f.readline()

    num = int(line.strip())

except IOError:

    print("File not found or path is incorrect")

except ValueError:

    print("Could not convert data to an integer")

else:

    print("File opened successfully")

finally:

    f.close()

5.使用finally子句

无论try语句是否成功,finally语句都将被执行。该语句用于处理清除和关闭资源,确保不管发生了什么情况,都不会泄漏资源。如果发生异常,finally语句将在所有except代码块之后执行。如果没有发生异常,finally语句在try和else语句块之后执行。

try:

    f = open("test.txt")

    line = f.readline()

    num = int(line.strip())

except IOError:

    print("File not found or path is incorrect")

except ValueError:

    print("Could not convert data to an integer")

else:

    print("File opened successfully")

finally:

    f.close()

6.自定义异常

Python也允许用户定义新的异常类,以便更好地控制程序的异常处理流程。例如,如果要检测某个函数的输入是否超出了某个范围,则可以创建一个自定义的异常类,并在函数中抛出该异常。

class InputOutOfRangeError(Exception):

    pass

def get_age():

    age = int(input("Enter your age: "))

    if (age < 0) or (age > 150):

        raise InputOutOfRangeError("Age out of range")

    return age

try:

    age = get_age()

    print("Your age is:", age)

except InputOutOfRangeError:

    print("Error: Input out of range")

7.总结

try和except语句是Python中处理异常的主要方式。这些语句允许程序员在代码中添加特定的异常处理程序,以便在程序执行期间出现错误或异常时能够快速响应,从而避免程序崩溃。要处理多个异常,可以使用多个except语句或者使用元组。使用else语句可以在try语句中没有任何异常的情况下执行一些代码。使用finally语句可以确保资源被正确关闭和整理。最后,Python还允许程序员创建自定义异常类,从而更好地控制程序的异常处理流程。