TypeScript中如何在函数返回null时触发try..catch的catch块
解决思路与代码修改
首先要明确:try/catch 只会捕获代码执行过程中抛出的异常(Error),函数返回null属于正常的返回值,不会触发catch块。要实现你想要的效果,可以按以下两种方式修改:
方式一:手动抛出错误触发catch
在拿到imgpath的返回值后,判断如果是null就主动抛出一个错误,这样catch块就会执行:
try { const availableimg = await imgpath({ filename, width, height }); if (availableimg === null) { // 主动抛出错误,让catch捕获 throw new Error("图片路径获取失败"); } res.send(`${availableimg}`); } catch (err) { // 这里会处理两种情况:imgpath抛出的异常,或者上面主动抛出的null情况 console.error(err); // 写你需要执行的代码,比如返回错误响应 res.status(404).send("图片不存在"); }
方式二:直接判断null执行逻辑(无需依赖catch)
如果imgpath本身不会抛出其他异常,你可以不用try/catch,直接判断返回值:
const availableimg = await imgpath({ filename, width, height }); if (availableimg === null) { // 这里写原来catch里的代码 res.status(404).send("图片不存在"); } else { res.send(`${availableimg}`); }
如果imgpath可能抛出其他异步错误(比如网络请求失败、参数错误),推荐用第一种方式,这样可以统一处理所有错误场景。
内容的提问来源于stack exchange,提问作者Galal Mohamed
相关产品推荐
相关产品推荐

