一、抛出异常 raise
1. 什么是 raise?
2. 语法
raise 异常类型("错误提示信息")
3. 最简单示例
age = -5
if age < 0:
# 主动抛出值异常
raise ValueError("年龄不能为负数!")
运行后会直接报错:
ValueError: 年龄不能为负数!
4. 常用内置异常搭配 raise
5. raise + try-except 组合(最常用)
defset_age(age):
if age < 0or age > 150:
raise ValueError("年龄必须在 0~150 之间")
try:
set_age(-10)
except ValueError as e:
print("出错啦:", e)
二、自定义异常类(重点)
1. 什么是自定义异常?
自己定义一个专属异常类,用来表示特定业务错误。
比如:
2. 语法(固定写法)
class自定义异常名(Exception):
def__init__(self, msg="异常信息"):
super().__init__(msg)
必须继承 Exception
3. 完整示例:自定义年龄异常
# 1. 定义自定义异常
classAgeError(Exception):
def__init__(self, msg):
self.msg = msg
super().__init__(msg)
# 2. 使用 raise 抛出自定义异常
age = 200
if age > 150:
raise AgeError("年龄超出合法范围!")
4. 自定义异常 + try-except
classPasswordError(Exception):
pass
defcheck_pwd(pwd):
iflen(pwd) < 6:
raise PasswordError("密码长度不能少于6位!")
try:
check_pwd("123")
except PasswordError as e:
print("捕获自定义异常:", e)
三、raise 的作用(为什么要用?)
- 4. 业务逻辑校验必备(年龄、密码、金额、手机号等)
四、自定义异常的好处
五、超级完整综合案例
# 自定义异常
classBalanceError(Exception):
pass
# 取款函数
defwithdraw(money, balance):
if money > balance:
raise BalanceError("余额不足!")
print("取款成功")
# 调用
try:
withdraw(500, 200)
except BalanceError as e:
print(e)
📝 本章超级总结
- 1. raise:主动抛出异常
raise ValueError("错误信息")
- 2. 自定义异常:继承 Exception
classMyError(Exception):
pass
- 3. 抛出自定义异常:
raise MyError("出错啦")
- 4. 捕获自定义异常:
try:
...
except MyError as e:
...