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

Python中的异常处理函数及使用方法

发布时间:2023-05-30 19:09:58

在编写程序的过程中,我们经常会遇到各种异常情况,例如输入错误、文件不存在、网络异常等等。这些异常情况可能会导致程序崩溃或结果不正确,因此需要用异常处理函数对其进行处理。Python中提供了多种异常处理函数及使用方法,下面我们将详细介绍它们的使用。

1. try-except语句

try-except语句是Python中最基本的异常处理机制。它的基本形式如下:

try:
    # 可能会引发异常的代码
except 异常类型 as 异常对象:
    # 异常处理代码

先执行try块中的代码,如果没有引发异常,就直接跳过except块,继续执行下面的代码。如果发生异常,就跳转到相应的except块,并执行其中的异常处理代码。其中,异常类型可以是Python内置的异常类,如TypeError、ValueError等等,也可以是自定义的异常类。异常对象是一个变量,用于存储引发的异常信息。

下面是一个例子,用try-except处理除以0异常:

try:
    x = 1 / 0
except ZeroDivisionError as e:
    print("除以0错误:", e)

执行结果:

除以0错误: division by zero

2. try-except-else语句

有时候我们只想在try块中成功执行代码时执行一些操作,而没有发生异常时,不需要执行任何操作,这时可以使用try-except-else语句。它的基本形式如下:

try:
    # 可能会引发异常的代码
except 异常类型 as 异常对象:
    # 异常处理代码
else:
    # 没有发生异常情况下要执行的代码

其中,else块里面的代码只有在没有引发异常时才会执行。

下面是一个例子:

try:
    x = int(input("请输入一个整数:"))
except ValueError as e:
    print("输入格式错误:", e)
else:
    print("输入的整数是:", x)

如果输入的是一个整数,会输出:

请输入一个整数:123
输入的整数是: 123

如果输入的是一个字符串,会输出:

请输入一个整数:abc
输入格式错误: invalid literal for int() with base 10: 'abc'

3. try-except-finally语句

有时候我们需要在发生异常或者不发生异常时都执行一些操作,这时可以使用try-except-finally语句。它的基本形式如下:

try:
    # 可能会引发异常的代码
except 异常类型 as 异常对象:
    # 异常处理代码
finally:
    # 不管是否发生异常都要执行的代码

其中,finally块里的代码不管发生什么情况都会执行,例如释放资源、关闭文件等等。

下面是一个例子:

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

如果文件存在,会输出文件的内容;如果文件不存在,会输出错误信息;无论如何都会调用f.close()关闭文件。

4. raise语句

raise语句可以手动引发异常。它的基本形式如下:

raise 异常类型(异常信息)

其中,异常类型可以是Python内置的异常类,如TypeError、ValueError等等,也可以是自定义的异常类。异常信息是一个字符串,用于描述引发的异常情况。

下面是一个例子,用raise语句引发异常:

def divide(x, y):
    if y == 0:
        raise ValueError("分母不能为0")
    else:
        return x / y

try:
    x = divide(10, 0)
except ValueError as e:
    print("发生异常:", e)
else:
    print("结果是:", x)

执行结果:

发生异常: 分母不能为0

5. assert语句

assert语句用于判断一个条件是否成立,如果不成立就引发AssertionError异常。它的基本形式如下:

assert 条件表达式, 异常信息

其中,条件表达式是一个bool类型的值或者可以转换成bool类型的值,如果为False就会引发AssertionError异常。异常信息是一个字符串,用于描述断言失败的原因。

下面是一个例子,用assert语句判断输入的数字是否为正数,并引发异常:

num = int(input("请输入一个正数:"))
assert num >= 0, "输入的数字不是正数"
print("输入的数字是:", num)

如果输入的数字是负数,会引发AssertionError异常,输出错误信息;如果输入的数字是正数,会输出数字本身。

以上就是Python中常用的异常处理函数及使用方法。在编写程序中,要充分预料到各种可能的异常情况,并用相应的异常处理机制进行处理,保证程序的稳定性和正确性。