苦练Python第18天:Python异常处理锦囊
原文链接:dev.to/therahul_gu…
作者:Rahul Gupta
译者:倔强青铜三
前言
大家好,我是倔强青铜三。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!
欢迎来到 100 天 Python 挑战 的 第 18 天!
今天,我们将攻克 异常处理:让程序在遭遇错误时不再崩溃,而是优雅地恢复并给出提示。
📦 今日收获清单
- 异常是什么,如何产生
try
、except
、else
、finally
的用法多异常捕获与自定义异常实战示例与最佳实践⚠️ 异常是什么?
异常(Exception) 是 运行时错误,会打断程序正常流程。
常见场景:
- 除零访问不存在的索引类型转换失败文件不存在
无保护代码:
num = int(input("Enter a number: "))print(10 / num)
用户输入 0
或字母,程序直接崩溃。
下面加上“安全网”。
✅ 基础 try-except
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.”🎯 一网打尽?(谨慎使用)
try: risky_code()except Exception as e: print("Something went wrong:", e)
适合记录日志,但日常开发请尽量捕获具体异常。
🧠 else
& finally
双保险
else
:无异常时 执行finally
:无论如何 都执行,常用于清理资源try: num = int(input("Enter number: ")) result = 10 / numexcept ZeroDivisionError: print("Can't divide by zero.")else: print("Division successful:", result)finally: print("This always runs.")
🔁 一次捕获多种异常
try: numbers = [1, 2, 3] print(numbers[5]) # IndexErrorexcept (IndexError, ValueError) as e: print("An error occurred:", e)
🚀 实战:安全读取用户年龄
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()
🧰 进阶:自定义异常
定义业务专属错误类型:
class AgeTooLowError(Exception): passdef check_age(age): if age < 18: raise AgeTooLowError("You must be at least 18.")
🧼 异常处理最佳实践
- ✅ 捕获具体异常,避免裸
except
✅ 使用 finally
释放资源(如关闭文件)✅ 提供清晰、友好的错误提示🚫 别把异常当流程控制工具🧠 一日精华
- 异常是程序运行时的“意外”,需要被捕获
try-except-else-finally
四剑客各有分工多异常、自定义异常让错误处理更精准写出健壮、用户友好的代码,从异常处理开始最后感谢阅读!欢迎关注我,微信公众号:
倔强青铜三
。欢迎点赞
、收藏
、关注
,一键三连!!!