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

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

相关推荐
DFRobot智位机器人5 分钟前
AIOT开发选型:行空板 K10 与 M10 适用场景与选型深度解析
人工智能
想成为风筝2 小时前
从零开始学习深度学习—水果分类之PyQt5App
人工智能·深度学习·计算机视觉·pyqt
F_D_Z2 小时前
MMaDA:多模态大型扩散语言模型
人工智能·语言模型·自然语言处理
阿芯爱编程2 小时前
2025前端面试题
前端·面试
江沉晚呤时2 小时前
在 C# 中调用 Python 脚本:实现跨语言功能集成
python·microsoft·c#·.net·.netcore·.net core
大知闲闲哟3 小时前
深度学习G2周:人脸图像生成(DCGAN)
人工智能·深度学习
飞哥数智坊3 小时前
Coze实战第15讲:钱都去哪儿了?Coze+飞书搭建自动记账系统
人工智能·coze
wenzhangli73 小时前
低代码引擎核心技术:OneCode常用动作事件速查手册及注解驱动开发详解
人工智能·低代码·云原生
电脑能手3 小时前
如何远程访问在WSL运行的Jupyter Notebook
ide·python·jupyter
Edward-tan3 小时前
CCPD 车牌数据集提取标注,并转为标准 YOLO 格式
python