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

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

相关推荐
Shawn_Shawn1 小时前
mcp学习笔记(一)-mcp核心概念梳理
人工智能·llm·mcp
冷雨夜中漫步3 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
33三 三like3 小时前
《基于知识图谱和智能推荐的养老志愿服务系统》开发日志
人工智能·知识图谱
芝士爱知识a3 小时前
【工具推荐】2026公考App横向评测:粉笔、华图与智蛙面试App功能对比
人工智能·软件推荐·ai教育·结构化面试·公考app·智蛙面试app·公考上岸
郝学胜-神的一滴3 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再3 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
腾讯云开发者4 小时前
港科大熊辉|AI时代的职场新坐标——为什么你应该去“数据稀疏“的地方?
人工智能
工程师老罗4 小时前
YoloV1数据集格式转换,VOC XML→YOLOv1张量
xml·人工智能·yolo
喵手5 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控