python编程进阶之异常处理用法实例分析

  • Post category:Python

python编程进阶之异常处理用法实例分析

在Python编程中,代码中常常会出现错误。例如,当我们试图读取一个不存在的文件时,会得到一个FileNotFoundError。当我们访问一个不存在的索引时,会得到一个IndexError。这样的错误会导致程序终止运行。

为了避免这样的问题,可以使用异常处理语句来捕获这些错误。Python中的异常处理分为try、except、finally三个关键字。

try语句

try语句是Python中的异常处理语句。它可以在代码块中识别可能出现异常的代码,并在异常出现时执行相应的处理程序,从而避免程序因异常而终止。

try语句有以下的语法:

try:
    # 可能出现异常的代码
except 异常类型1:
    # 处理异常类型1的代码
except 异常类型2:
    # 处理异常类型2的代码
...
else:
    # try语句中没有出现异常时执行的代码
finally:
    # 无论是否出现异常都会执行的代码

在该语法中,try语句后面的代码块是可能出现异常的代码块。如果try语句块中的代码没有出现异常,else块中的代码会被执行。如果出现异常,try语句会从exception1开始顺序匹配异常类型,找到第一个与异常类型匹配的except语句,并执行其中的代码。如果没有找到与异常类型匹配的except语句,异常会被传递到下一层的try语句。如果最终异常没有被捕获,会导致程序的结束。

finally块中的代码会无论是否出现异常都会执行。常用于清理工作,例如关闭文件或网络连接。

except语句

except语句是try语句中的异常处理模块。它可以捕获try语句中抛出的异常,并在异常出现时执行相应的处理程序,例如输出错误信息、记录日志或重新尝试执行当前操作等。

语法如下:

try:
    # 可能出现异常的代码
except 异常类型1:
    # 处理异常类型1的代码
except 异常类型2:
    # 处理异常类型2的代码
...

except语句中可以用as关键字给异常起一个别名,并在代码中使用该别名访问异常对象的属性。

示例1:捕获FileNotFoundError异常

以下代码演示了如何使用try-except语句捕获可能出现的FileNotFoundError异常:

try:
    f = open('file.txt', 'r')
except FileNotFoundError:
    print('文件不存在')
else:
    data = f.read()
    print(data)
    f.close()

在该代码中,我们使用try语句包含打开文件的操作。如果文件不存在,会抛出FileNotFoundError异常,这时except语句会被调用,代码段”文件不存在”会被输出。如果文件存在,else语句会被执行,文件内容会被读取并输出,最后我们使用f.close() 关闭文件。

示例2:自定义异常类

我们也可以自定义一个异常类,在程序中使用raise语句手动抛出异常。例如,以下代码演示了如何自定义一个异常类,并在程序中使用它:

class MyException(Exception):
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return self.message

try:
    x = -1
    if x < 0:
        raise MyException('x不能小于0')
except MyException as e:
    print(e)
else:
    print('x大于等于0')

该代码中,我们自定义了一个异常类MyException,并在类的构造函数中初始化异常信息。在try语句中,我们手动抛出了MyException异常,并在except语句块中处理了该异常。如果x小于0,会抛出异常,并输出”x不能小于0″。如果x大于等于0,else语句块会被执行,输出”x大于等于0″。

以上就是关于Python异常处理的详细介绍。异常处理是Python编程中十分重要的知识点,在实际开发中需要仔细掌握。