# 运行时错误：生成器在 throw() 后没有停止

- **ID:** `python/pytest-fixture-yield-without-finally`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

在 fixture 的 yield 之后没有正确处理异常，导致 teardown 代码未执行或生成器未正确关闭。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.10 | active | — | — |

## 解决方案

1. **确保 yield 后没有异常中断** (90% 成功率)
   ```
   @pytest.fixture
def my_fixture():
    setup()
    yield resource
    teardown()
   ```
2. **使用 try/finally 确保清理** (95% 成功率)
   ```
   @pytest.fixture
def my_fixture():
    try:
        yield resource
    finally:
        teardown()
   ```

## 无效尝试

- **yield 后直接写清理代码** — 尝试在 yield 后直接写清理代码，但异常发生时清理代码不执行 (70% 失败率)
- **在 finally 中再次 yield** — 尝试使用 try/finally 但 finally 中又 yield 导致错误 (50% 失败率)
