Python 异常处理
Python 异常处理 · 难度:入门 · +10XP
Python 异常处理
异常(Exception)是程序运行时出现的错误。Python使用try/except机制来捕获并处理异常,避免程序崩溃,让程序更加健壮。
基本语法
try:
# 可能出错的代码
num = int(input("请输入数字:"))
result = 100 / num
except ValueError:
print("输入的不是有效数字!")
except ZeroDivisionError:
print("不能除以零!")
except Exception as e:
print(f"其他错误:{e}")
else:
print(f"计算成功,结果:{result}")
finally:
print("无论是否出错,都会执行这里")
常见内置异常
| 异常类型 | 触发条件 | 示例 |
|---|---|---|
ValueError | 值不正确 | int("abc") |
TypeError | 类型错误 | "a" + 1 |
IndexError | 索引越界 | [1,2][5] |
KeyError | 字典键不存在 | {}["x"] |
FileNotFoundError | 文件不存在 | open("no.txt") |
ZeroDivisionError | 除以零 | 1/0 |
AttributeError | 属性不存在 | None.upper() |
ImportError | 模块导入失败 | import xxx |
自定义异常
class AgeError(Exception):
"""年龄不合法异常"""
def __init__(self, age, msg="年龄必须在0-150之间"):
self.age = age
self.msg = msg
super().__init__(f"{msg},当前值:{age}")
# 使用自定义异常
def set_age(age):
if age < 0 or age > 150:
raise AgeError(age)
print(f"年龄设置为:{age}")
try:
set_age(-5)
except AgeError as e:
print(f"出错:{e}")
实战练习
- 写一个除法计算器,处理输入非数字和除数为零两种情况
- 实现一个安全的文件读取函数,文件不存在时返回空字符串而不是报错
- 创建一个自定义异常 PasswordTooShort,密码不足8位时抛出
- 用try/except从字典中获取值,键不存在时返回默认值0