首页3分钟掌握Python异常处理,别再让程序崩溃!
Python异常处理编程技巧软件开发

3分钟掌握Python异常处理,别再让程序崩溃!

掌握Python异常处理技巧,提升代码健壮性。本文提供三种核心场景的解决方案,助你告别程序崩溃。

2026-05-19 7分钟 202

封面图

程序崩溃的真相:你离‘优雅报错’只差一个try

你是否遇到过这样的场景:代码运行到一半突然报错,控制台打印一堆难懂的英文错误信息,而你根本不知道是哪一行代码出了问题?或者更糟,程序直接崩溃,数据丢失,不得不重新运行?这不是你不够努力,而是缺乏对异常处理的系统认知。

在Python开发中,异常(Exception)是程序应对错误的最后一道防线。如果不会处理异常,你的代码就像没有防弹衣的士兵,随时可能‘阵亡’。本文将带你深入理解Python异常处理的核心机制,并提供三个实战场景的解决方案。

场景一:文件读写时的‘找不到文件’危机

当你尝试读取一个不存在的文件时,程序会抛出FileNotFoundError。如果你不加处理,程序就会直接终止。

错误示范

with open('data.txt', 'r') as f:
    data = f.read()
    print(data)

正确做法:使用try-except块包裹代码,并捕获特定异常。

try:
    with open('data.txt', 'r') as f:
        data = f.read()
        print(data)
except FileNotFoundError:
    print("文件不存在,请检查路径或创建文件。")
    # 可以选择创建默认文件
    with open('data.txt', 'w') as f:
        f.write("默认内容")
except Exception as e:
    print(f"发生未知错误:{e}")

关键点

  • 只捕获你预期的异常类型,不要只写except Exception,以免掩盖真正的问题。
  • 提供清晰的提示信息,而不是直接抛出原始错误。
  • 在必要时提供补救措施,比如创建默认文件。

场景二:网络请求超时与连接失败

在实际应用中,网络请求经常因为超时或服务器无响应而失败。如果不处理,你的程序会一直等待,最终卡死。

错误示范

import requests
response = requests.get('https://example.com')

正确做法:设置超时时间,并捕获requests.exceptions.Timeoutrequests.exceptions.ConnectionError

try:
    response = requests.get('https://example.com', timeout=5)
    print(response.status_code)
except requests.exceptions.Timeout:
    print("请求超时,请检查网络连接或服务器状态。")
except requests.exceptions.ConnectionError:
    print("无法连接到服务器,请确认URL是否正确。")
except Exception as e:
    print(f"其他错误:{e}")

关键点

  • 始终为网络请求设置合理的超时时间,避免程序无限等待。
  • 区分不同类型的网络错误,提供针对性提示。
  • 在日志中记录错误详情,便于后续排查。

场景三:用户输入验证与非法数据

用户输入的数据经常不符合预期,比如非数字、格式错误等。如果不处理,程序会崩溃或执行错误逻辑。

错误示范

age = int(input("请输入年龄:"))

如果用户输入"abc",程序会直接崩溃。

正确做法:捕获ValueError,并给出友好提示。

try:
    age = int(input("请输入年龄:"))
    if age < 0:
        print("年龄不能为负数。")
    else:
        print(f"欢迎,{age}岁!")
except ValueError:
    print("请输入有效的数字。")

关键点

  • 对输入数据进行严格验证,避免后续逻辑错误。
  • 提供清晰的错误提示,引导用户修正输入。
  • 将错误处理逻辑与主逻辑分离,提高代码可读性。

立即行动:构建你的异常处理习惯

  1. 写代码前先想异常:在编写任何可能出错的操作前,先思考:‘如果这一步失败了,我该怎么办?’
  2. 使用具体的异常类型:不要滥用except Exception,明确捕获你预期的错误。
  3. 记录日志而非打印错误:在生产环境中,使用日志库记录错误信息,便于追踪。
  4. 提供用户友好的提示:让用户知道发生了什么,以及该如何解决。

总结:让代码更健壮,从异常处理开始

异常处理不是简单的‘捕获并忽略’,而是构建一个更健壮、更可维护的代码体系。通过掌握文件、网络、输入等常见场景的异常处理,你的代码将不再脆弱,而是能够从容应对各种异常情况。

下次当你再次面对程序崩溃时,不要惊慌。你已经拥有了应对它的工具。现在,打开你的编辑器,写下你的第一个异常处理代码吧!

欢迎在评论区分享你的异常处理经验,或者提出你遇到的棘手问题,我们一起解决!

分享: