苦练Python第18天:Python异常处理锦囊
作者: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
四剑客各有分工- 多异常、自定义异常让错误处理更精准
- 写出健壮、用户友好的代码,从异常处理开始
最后感谢阅读!欢迎关注我,微信公众号 :
倔强青铜三
。欢迎点赞
、收藏
、关注
,一键三连!!!