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

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

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

作者:Rahul Gupta

译者:倔强青铜三

前言

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

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

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


📦 今日收获清单

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

⚠️ 异常是什么?

异常(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 四剑客各有分工
  • 多异常、自定义异常让错误处理更精准
  • 写出健壮、用户友好的代码,从异常处理开始

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

相关推荐
风娜19 分钟前
IT 疑难杂症诊疗室:从现象到根因的系统排查方法论
人工智能·github
碧海银沙音频科技研究院20 分钟前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法
承渊政道24 分钟前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(开源大模型ChatGLM高级定制化应用实战)
人工智能·pytorch·python·llm·模型微调·glm
howdoyoudo20260628 分钟前
AI审计手记 #28:从“暂停训练”到“切断联网”——AI安全控制手段的极限升级
大数据·人工智能·安全·ai·语言模型
colman wang44 分钟前
人工智能课程(配套AIMA(Artificial Intelligence: A Modern Approach))
人工智能
LinXunFeng5 小时前
Draw Things 换装 LoRA 实战:用 Silo 秒装,同一提示词对比出图
人工智能·开源·aigc
xiaohaiAIgeo5 小时前
【2026年】通风柜自动门安全吗?联锁逻辑与防夹设计
人工智能·安全·科普知识
像风一样自由20205 小时前
52.Docker部署大模型应用从本地开发到服务化运行
运维·人工智能·docker·容器·大模型·智能体
牛战士coding5 小时前
AI Agent 如何接入真实业务系统?订单助手三层架构完整拆解
人工智能·架构