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

异常处理函数:如何使用try-except语句捕获和处理异常

发布时间:2023-06-18 13:46:09

在程序的开发过程中,由于各种原因,程序可能会出现各种异常,比如:输入错误、内存不足、网络繁忙等等。这时候,程序就需要进行异常处理,以保证程序的正常运行,并提醒用户发生了异常。

Python中,异常处理函数是使用try-except语句实现的。try语句块中包含我们需要执行的代码,如果执行过程中出现了异常,则会自动进入对应的except语句块中进行处理,并报告错误信息。下面我们来看一下如何使用try-except语句捕获和处理异常。

一、try-except语句的基本使用

try:

    # 执行需要处理的代码

except Exception as e:

    # 处理异常信息

上面代码表示,在try语句块中,我们要执行需要处理的代码,如果出现了异常则进入except语句块中进行处理。其中,Exception是python中所有异常的基类,通过as e可以获取异常信息对象。

二、常用异常类型及处理方法

1. IndexError

这种异常一般来说是由于变量的下标超出了范围引起的,例如:

list_a = [1, 2, 3]

print(list_a[3])

输出的异常信息是:

IndexError: list index out of range

处理该异常,我们可以这样写:

try:

    list_a = [1, 2, 3]

    print(list_a[3])

except IndexError as e:

    print("IndexError: list index out of range")

执行该代码,输出的信息是:

IndexError: list index out of range

2. ZeroDivisionError

在python中,被0除是不被允许的,否则会引起ZeroDivisionError异常,例如:

a = 10/0

print(a)

输出的异常信息是:

ZeroDivisionError: division by zero

处理该异常,我们可以这样写:

try:

    a = 10/0

    print(a)

except ZeroDivisionError as e:

    print("ZeroDivisionError: division by zero")

执行该代码,输出的信息是:

ZeroDivisionError: division by zero

3. NameError

当我们引用一个未声明的变量时,就会引发NameError异常,例如:

a = b + c

print(a)

输出的异常信息是:

NameError: name 'b' is not defined

处理该异常的方法就是在except中重新定义该变量,例如:

try:

    a = b + c

    print(a)

except NameError as e:

    b = 1

    c = 2

    a = b + c

    print(a)

执行该代码,输出的信息是:

3

4. FileNotFoundError

当我们访问一个不存在的文件时,就会引发FileNotFoundError异常,例如:

f = open("test.txt")

输出的异常信息是:

FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

处理该异常的方法就是在except语句块中指定文件打开模式和文件名称,例如:

try:

    f = open("test.txt", "r")

    print(f.read())

except FileNotFoundError as e:

    print("FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'")

执行该代码,输出的信息是:

FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

以上是常见的几种异常的处理方法,但是在实际开发中,还可能会遇到其他类型的异常。我们可以通过查看官方文档、第三方库的异常以及自定义异常来了解更多异常类型的处理方法。

三、try-except语句的高级用法

1. 一次处理多种异常

当我们需要对不同类型的异常分别进行处理时,可以在一个try语句块中定义多个except语句块,如下所示:

try:

    # 执行需要处理的代码

except ZeroDivisionError as e:

    # 处理除以0的异常

except NameError as e:

    # 处理未定义变量的异常

except IndexError as e:

    # 处理超出下标范围的异常

2. finally语句块

不管是否发生异常,finally语句块中的代码都会被执行。这个语句块通常用来进行一些清理工作,比如关闭文件、释放资源等。

try:

    # 执行需要处理的代码

except Exception as e:

    # 处理异常信息

finally:

    # 进行清理操作,比如关闭文件、释放资源等

四、抛出异常

在程序中,我们可以通过raise语句手动地引发异常。比如,我们可以在某个条件下,抛出一个自定义的异常:

try:

    a = input("请输入一个小于5的正整数:")

    a = int(a)

    if a > 5:

        raise ValueError("输入的数值必须小于5")

except Exception as e:

    print("程序发生了一个异常:", e)

执行该代码,输出的信息是:

请输入一个小于5的正整数:7

程序发生了一个异常: 输入的数值必须小于5

以上就是异常处理函数的基本用法、常用异常类型及处理方法、高级用法和手动抛出异常等内容。在程序开发中,合理使用try-except语句可以有效地提高程序的健壮性和安全性,保证程序的正常运行。