res.status()与res.json()抛出错误的场景及查询方法
res.status() 和 res.json() 可能抛出的错误及查询方式
一、可能抛出的错误
res.status()
- 当响应已经完成(
res.finished为true)时调用,会抛出错误——此时响应流程已结束,无法再修改状态码 - 传入的状态码不符合HTTP规范(非100-599之间的整数),会抛出
TypeError或RangeError
res.json()
- 响应已结束(
res.finished为true)或响应头已发送(res.headersSent为true)时调用,会抛出错误——此时无法再向客户端发送响应体 - 要序列化的对象存在循环引用,会触发
JSON.stringify()的TypeError,进而导致res.json()抛出错误 - 底层响应流出现IO异常(比如客户端提前断开连接),也可能抛出相关错误
二、除查看源码外的查询方式
- 官方API文档:Express的官方文档会明确标注每个方法的参数要求、调用限制及可能的异常场景,直接对应方法条目就能找到相关说明
- TypeScript类型定义:安装
@types/express后,查看Response接口的方法定义,能直观看到参数的类型约束,比如status()要求传入合法的HTTP状态码数字,类型检查时就能提前发现非法参数问题 - 本地模拟测试:手动构造异常场景(比如在
headersSent为true后调用方法、传入循环引用对象、传入非法状态码),通过try-catch捕获错误,查看具体的错误类型和信息 - 社区问题汇总:参考Stack Overflow等平台上的相关讨论,很多开发者会分享实际遇到的错误场景和解决经验,能快速定位常见问题
内容的提问来源于stack exchange,提问作者Alexander Mills
相关产品推荐
相关产品推荐

