程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python异常处理 让程序更稳健(python 异常处理方法)

hfteth 2025-07-24 17:45:12 技术文章 2 ℃

在编程的世界里,事情并不总是按计划进行。

有时候,代码可能会遇到一些意外情况,比如用户输入了错误的格式,或者程序试图访问不存在的文件。这些意外情况在Python中被称为“异常”。

如果不对这些异常进行处理,程序可能会突然崩溃,给用户带来不好的体验。

幸运的是,Python提供了强大的异常处理机制,帮助我们优雅地应对这些问题。

这篇文章就来聊聊Python中的异常处理,并通过实际代码示例帮助你更好地理解和使用它们。

#01 什么是异常

异常是在程序运行过程中出现的意外情况。这些情况可能是由于用户输入错误、网络问题、文件不存在等原因引起的。Python中的异常分为两种:语法错误运行时错误

语法错误这是由于代码不符合Python的语法规则引起的。

比如,忘记写冒号或者括号不匹配。语法错误通常会导致程序无法运行。


运行时错误这是在程序运行过程中出现的错误。

比如,试图除以零或者访问列表中不存在的索引。运行时错误不会阻止程序启动,但会在运行过程中导致程序崩溃。


#02 Python中常见的异常类型


Python定义了许多内置的异常类型,每种类型都对应一种特定的错误情况。以下是一些常见的异常类型:


1.try-except语句:捕获和处理异常

在Python中,我们使用try-except语句来捕获和处理异常。try块中的代码是可能会引发异常的代码,而except块则用于处理这些异常。

如果try块中的代码引发了异常,程序会立即跳转到except块,并执行其中的代码。

try:
    # 尝试执行的代码
    result = 10 / 0
except ZeroDivisionError:
    # 处理特定异常的代码
    print("除数不能为0")

在这个例子中,try块中的代码试图除以零,这会引发ZeroDivisionError异常。

except块捕获了这个异常,并打印了一条友好的错误信息,而不是让程序崩溃。


2.捕获多个异常

一个try块可以有多个except子句,用于捕获和处理不同类型的异常。

try:
    # 尝试执行的代码
    result = 10 / int(input("请输入一个数字:"))
except ZeroDivisionError:
    # 处理除零异常
    print("除数不能为0")
except ValueError:
    # 处理输入不是数字的异常
    print("请输入一个有效的数字")


3.捕获所有异常

如果你想捕获所有类型的异常,可以使用一个通用的except子句,不指定具体的异常类型。

try:
    # 尝试执行的代码
    result = 10 / int(input("请输入一个数字:"))
except Exception as e:
    # 捕获所有异常
    print(f"发生了一个错误:{e}")


4.else和finally子句

try-except语句还可以包含elsefinally子句。

else子句:如果没有异常发生,else子句中的代码将被执行。

finally子句:无论是否发生异常,finally子句中的代码都将被执行。这通常用于清理资源,比如关闭文件或释放网络连接。

try:
    # 尝试执行的代码
    result = 10 / int(input("请输入一个数字:"))
except ZeroDivisionError:
    # 处理除零异常
    print("除数不能为0")
else:
    # 如果没有异常发生,执行else子句
    print("计算结果是:", result)
finally:
    # 无论是否发生异常,执行finally子句
    print("程序执行完毕")


5.raise关键字:手动抛出异常

有时候,我们可能希望在程序中手动抛出一个异常。这可以通过raise关键字来实现。raise可以抛出一个指定类型的异常,并可以附带一个描述性的错误信息。

try:
    # 手动抛出异常
    raise ValueError("这是一个自定义的错误信息")
except ValueError as e:
    # 捕获并处理异常
    print(f"捕获到异常:{e}")


#03 实战演练:异常处理的应用


通过几个实际的例子,我们可以更好地理解异常处理的应用。

简易计算器

假设我们要编写一个简易的计算器,用户可以输入一个四则运算表达式,程序计算并输出结果。我们可以使用try-except语句来处理用户输入错误的情况。

while True:
    try:
        op = input('请输入一个四则运算算式(例如1+2):')
        if '+' in op:
            a = op.split('+')
            result = int(a[0]) + int(a[1])
            print(result)
        elif '-' in op:
            a = op.split('-')
            result = int(a[0]) - int(a[1])
            print(result)
        elif '*' in op:
            a = op.split('*')
            result = int(a[0]) * int(a[1])
            print(result)
        elif '/' in op:
            a = op.split('/')
            result = int(a[0]) / int(a[1])
            print(result)
        elif op == 'C':
            print('感谢您使用本计算器!')
            break
        else:
            raise Exception('请按1+2这个格式输入算式!')
    except ZeroDivisionError:
        print('注意除法运算,除数不能为0!')
    except Exception as e:
        print(e)


文件读取

假设我们要编写一个程序,读取用户指定的文件内容。我们可以使用try-except语句来处理文件不存在的情况。

try:
    filename = input('请输入文件名:')
    with open(filename, 'r') as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print(f"文件 {filename} 不存在")


通过这些代码示例,我们可以看到Python的异常处理机制在日常生活中的应用。无论是处理用户输入错误,还是处理文件读取问题,异常处理都能帮助我们编写出更加健壮和用户友好的程序。

掌握这些异常处理技巧,就像是给程序穿上了一层防护服,让它在面对意外情况时能够从容应对。

点击关注,免费获取打包整理的学习资料,内容包含但不限于电子书、教程、源码

Tags:

最近发表
标签列表