苦练Python第18天:Python异常处理锦囊

苦练Python第18天:Python异常处理锦囊

原文链接:dev.to/therahul_gu...

作者:Rahul Gupta

译者:倔强青铜三

前言

大家好,我是倔强青铜三 。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎来到 100 天 Python 挑战第 18 天

今天,我们将攻克 异常处理:让程序在遭遇错误时不再崩溃,而是优雅地恢复并给出提示。


📦 今日收获清单

  • 异常是什么,如何产生
  • tryexceptelsefinally 的用法
  • 多异常捕获与自定义异常
  • 实战示例与最佳实践

⚠️ 异常是什么?

异常(Exception)运行时错误 ,会打断程序正常流程。

常见场景:

  • 除零
  • 访问不存在的索引
  • 类型转换失败
  • 文件不存在

无保护代码:

python 复制代码
num = int(input("Enter a number: "))
print(10 / num)

用户输入 0 或字母,程序直接崩溃。

下面加上"安全网"。


✅ 基础 try-except

python 复制代码
try:
    num = int(input("Enter a number: "))
    result = 10 / num
    print(result)
except ZeroDivisionError:
    print("You can't divide by zero!")
except ValueError:
    print("Please enter a valid number.")

运行示例:

  • 输入 0 → "You can't divide by zero!"
  • 输入 abc → "Please enter a valid number."

🎯 一网打尽?(谨慎使用)

python 复制代码
try:
    risky_code()
except Exception as e:
    print("Something went wrong:", e)

适合记录日志,但日常开发请尽量捕获具体异常。


🧠 else & finally 双保险

  • else无异常时 执行
  • finally无论如何 都执行,常用于清理资源
python 复制代码
try:
    num = int(input("Enter number: "))
    result = 10 / num
except ZeroDivisionError:
    print("Can't divide by zero.")
else:
    print("Division successful:", result)
finally:
    print("This always runs.")

🔁 一次捕获多种异常

python 复制代码
try:
    numbers = [1, 2, 3]
    print(numbers[5])  # IndexError
except (IndexError, ValueError) as e:
    print("An error occurred:", e)

🚀 实战:安全读取用户年龄

python 复制代码
def get_age():
    try:
        age = int(input("Enter your age: "))
        print("You are", age, "years old.")
    except ValueError:
        print("Invalid age. Please enter a number.")

get_age()

🧰 进阶:自定义异常

定义业务专属错误类型:

python 复制代码
class AgeTooLowError(Exception):
    pass

def check_age(age):
    if age < 18:
        raise AgeTooLowError("You must be at least 18.")

🧼 异常处理最佳实践

  • ✅ 捕获具体异常,避免裸 except
  • ✅ 使用 finally 释放资源(如关闭文件)
  • ✅ 提供清晰、友好的错误提示
  • 🚫 别把异常当流程控制工具

🧠 一日精华

  • 异常是程序运行时的"意外",需要被捕获
  • try-except-else-finally 四剑客各有分工
  • 多异常、自定义异常让错误处理更精准
  • 写出健壮、用户友好的代码,从异常处理开始

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

相关推荐
黎阳之光5 分钟前
黎阳之光:以视频孪生重构智慧防火,打造“天空地人智”一体化森林防火新范式
大数据·运维·人工智能·物联网·安全
why技术20 分钟前
AI Coding开始进入第四个时代,我还没上车呢!
前端·人工智能·后端
java1234_小锋22 分钟前
Spring AI 2.0 开发Java Agent智能体 - MCP(模型上下文协议)
java·人工智能·spring·spring ai
手写码匠24 分钟前
深入解析大模型架构之争:全能通用模型 vs 领域专精模型
人工智能·深度学习·算法·aigc
ZhengEnCi27 分钟前
09aa-偏置是什么?
人工智能
Daydream.V1 小时前
Python Flask超全入门实战教程|从零基础到项目部署
大数据·python·flask
桦说编程1 小时前
我让 AI 加了一个开关,结果代码走了原本不该走的分支
人工智能·代码规范
fly spider1 小时前
AI 到底是怎么访问网页的?从爬虫、Browser Agent 到 Computer Use
人工智能·爬虫
databook1 小时前
Manim物理模拟:别自己写欧拉了!
python·数学·动效