Python中如何处理异常

发布时间:2026-08-10 16:39:11


Python中处理异常的核心目标是避免程序因运行时错误直接崩溃,通过预设逻辑捕获并处理意外情况,保障程序稳定运行。以下是完整的处理方法:

一、先了解Python常见异常类型

  • ‌FileNotFoundError‌:尝试打开不存在的文件时触发。

  • ‌ZeroDivisionError‌:执行除以0的非法数学运算时触发。

  • ‌TypeError‌:操作的数据类型不匹配时触发,比如数字和字符串直接相加。

  • ‌NameError‌:使用未声明、未定义的变量时触发。

  • ‌IndexError‌:列表/元组取值时索引超出合法范围触发。

  • ‌KeyError‌:字典取值时访问不存在的键触发。
    所有Python内置异常都继承自Exception基类。

二、核心异常处理语法

  1. ‌基础try-except结构‌
    把可能触发异常的代码放入try块,对应异常的处理逻辑放入except块:

pythontry:
    result = 1 / 0except ZeroDivisionError:    print("除数不能为0,已自动处理")

执行try块代码时如果触发指定异常,程序不会崩溃,直接跳转到对应except块执行处理逻辑。

  1. ‌多异常精准捕获‌
    可以定义多个except块,分别处理不同类型的异常,实现差异化处理:

pythontry:
    num = int(input("请输入数字:"))
    res = 10 / numexcept ValueError:    print("输入内容不是合法数字")except ZeroDivisionError:    print("输入的数字不能为0")

也可以用元组形式在单个except中同时指定多种异常:

pythonexcept (ValueError, ZeroDivisionError):    print("输入内容不合法")
  1. ‌捕获所有异常‌
    不指定具体异常类型的except块可以捕获所有继承自Exception的异常,适合不确定具体异常类型的场景:

pythontry:    # 可能触发任意异常的代码
    passexcept:    print("程序出现未知异常,已自动处理")

三、补充子句完善异常处理逻辑

  • ‌else子句‌:仅当try块内代码完全没有触发任何异常时,才会执行else块的代码:

pythontry:
    num = int(input("请输入数字:"))except ValueError:    print("输入非法")else:    print(f"输入的数字是{num},没有异常")
  • ‌finally子句‌:无论try块是否触发异常、except是否执行,finally块的代码一定会执行,常用于资源清理场景:

pythontry:
    f = open("test.txt", "r")
    content = f.read()except FileNotFoundError:    print("文件不存在")finally:
    f.close()  # 无论文件是否成功读取,都确保关闭文件释放资源

四、异常处理最佳实践

  • 优先精准捕获具体异常类型,避免直接使用裸except,防止意外掩盖程序的严重错误。

  • 不要在except块中写空逻辑,至少要打印错误日志或给出用户友好提示,方便后续定位问题。

  • 不要用异常处理替代常规的条件判断,比如提前判断除数不为0,比单纯依赖捕获ZeroDivisionError更符合代码逻辑。


推荐阅读🔽

在线客服

您好,需要客服帮助吗?

解决方案

千万级动态 IP 池: 动态IP拨号VPS

  • 拨号云VPS
  • 动态PPTP
  • 代理IP
  • ECS云拨号

拨号云VPS

结合家用宽带拨号,最大化还原家庭办公网络环境!
前往购买

动态PPTP

电脑、安卓、苹果、安卓模拟器通用,支持PPTP、L2TP、SSTP多种协议!
前往购买

代理IP

HTTP、HTTPS、SOCKS5,畅享600W+纯净IP资源池!
前往购买

ECS云拨号

任意切换拨号地区,覆盖全国340+城市,1000+线路IP!
前往购买