当前位置:首页>python>Python 抛出异常(raise)+ 自定义异常类 超详细教程

Python 抛出异常(raise)+ 自定义异常类 超详细教程

  • 2026-10-12 01:12:11
Python 抛出异常(raise)+ 自定义异常类 超详细教程

一、抛出异常 raise

1. 什么是 raise?

  • • 主动让程序抛出一个异常
  • • 不是系统报错,是我们自己写代码故意报错
  • • 用于:数据不合法、条件不满足、业务逻辑出错

2. 语法

raise 异常类型("错误提示信息")

3. 最简单示例

age = -5
if age < 0:
# 主动抛出值异常
raise ValueError("年龄不能为负数!")

运行后会直接报错:

ValueError: 年龄不能为负数!

4. 常用内置异常搭配 raise

  • • ValueError:值不合法
  • • TypeError:类型不合法
  • • IndexError:索引越界
  • • KeyError:键不存在
  • • Exception:通用异常

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 的作用(为什么要用?)

  1. 1. 强制中断程序,不继续执行错误逻辑
  2. 2. 统一错误提示,让代码更规范
  3. 3. 让上层代码处理错误,分层清晰
  4. 4. 业务逻辑校验必备(年龄、密码、金额、手机号等)

四、自定义异常的好处

  1. 1. 错误类型更清晰
  2. 2. 代码可读性更高
  3. 3. 可以批量捕获自己的业务异常
  4. 4. 大型项目必备规范

五、超级完整综合案例

# 自定义异常
classBalanceError(Exception):
pass

# 取款函数
defwithdraw(money, balance):
if money > balance:
raise BalanceError("余额不足!")
print("取款成功")

# 调用
try:
    withdraw(500, 200)
except BalanceError as e:
print(e)

📝 本章超级总结

  1. 1. raise:主动抛出异常
    raise ValueError("错误信息")
  2. 2. 自定义异常:继承 Exception
    classMyError(Exception):
    pass
  3. 3. 抛出自定义异常:
    raise MyError("出错啦")
  4. 4. 捕获自定义异常:
    try:
        ...
    except MyError as e:
        ...

最新文章

随机文章