raise关键字
时间: 2025-07-15 21:34:19 浏览: 15
### 回答问题
#### 1. `raise` 关键字的作用
在 Python 中,`raise` 关键字用于手动抛出异常。它可以让程序在特定条件下触发一个异常,从而中断当前的执行流程并进入异常处理机制。
##### 基本用法
- **无参数**:重新抛出当前正在处理的异常。
- **带参数**:抛出指定的异常类型,并可以附加错误信息。
---
#### 2. 示例代码及解释
##### 示例 1: 抛出内置异常
```python
def check_positive(number):
if number <= 0:
raise ValueError("输入的数字必须是正数")
return number
try:
result = check_positive(-10)
except ValueError as e:
print(f"捕获到异常: {e}")
```
**解释**:
- 函数 `check_positive` 检查输入是否为正数。
- 如果输入小于等于 0,则使用 `raise` 抛出 `ValueError` 异常,并附带自定义错误信息。
- 在 `try...except` 块中捕获异常并打印错误信息。
---
##### 示例 2: 重新抛出异常
```python
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("除零错误,重新抛出异常...")
raise # 重新抛出当前异常
return result
try:
divide(1, 0)
except ZeroDivisionError as e:
print(f"最终捕获到异常: {e}")
```
**解释**:
- 在 `divide` 函数中,如果发生 `ZeroDivisionError`,我们首先打印一条消息,然后使用 `raise` 重新抛出该异常。
- 外部的 `try...except` 块捕获了这个重新抛出的异常,并打印最终的错误信息。
---
##### 示例 3: 抛出自定义异常
```python
class CustomError(Exception):
def __init__(self, message):
super().__init__(message)
def validate_input(value):
if value is None:
raise CustomError("输入值不能为空")
return value
try:
validate_input(None)
except CustomError as e:
print(f"捕获到自定义异常: {e}")
```
**解释**:
- 定义了一个自定义异常类 `CustomError`,继承自 `Exception`。
- 在 `validate_input` 函数中,如果输入值为 `None`,则抛出 `CustomError` 异常。
- 使用 `try...except` 捕获自定义异常并处理。
---
#### 3. `raise` 的常见应用场景
- **输入验证**:当函数接收到无效参数时,抛出异常以通知调用者。
- **资源管理**:在资源分配失败或不可用时,抛出异常以避免程序继续运行。
- **错误传播**:在某些情况下,可能需要将异常从底层传递到高层进行处理。
---
###
阅读全文
相关推荐




















