# 类型错误: 'HTTPException' 对象不可调用

- **ID:** `python/starlette-http-exception-not-callable`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

在Starlette或FastAPI中，将HTTPException实例（而非异常类）作为依赖项或中间件传递时，框架会尝试调用它，从而引发类型错误。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.x | active | — | — |

## 解决方案

1. **使用Starlette的HTTPException类作为异常抛出，而非作为返回值** (95% 成功率)
   ```
   from starlette.exceptions import HTTPException; raise HTTPException(status_code=404, detail='Not found')
   ```
2. **在依赖项中返回Response对象替代异常实例** (90% 成功率)
   ```
   from starlette.responses import JSONResponse; return JSONResponse(status_code=404, content={'detail': 'Not found'})
   ```

## 无效尝试

- **尝试将HTTPException作为函数导入并直接调用** — HTTPException是类，不是函数，直接调用不会触发异常，但作为依赖项仍会出错。 (70% 失败率)
- **在依赖项中使用raise HTTPException而不是return** — 在依赖项中raise会立即中断请求，但若返回实例则仍会引发错误。 (60% 失败率)
