Web App中catch块return未执行,返回结果不符预期求排查
问题原因
你忽略了finally块的执行逻辑:无论try块是否抛出异常、catch块是否执行,finally块都会被执行。你的代码中,finally块里的return ContentService.createTextOutput('Ok!')会直接覆盖catch块中返回的'Error!',导致最终返回结果永远是'Ok!'。
修正后的代码
调整return语句的位置,仅在finally中释放锁,用变量存储返回结果:
function doGet(e) { const lock = LockService.getDocumentLock(); let result; if (lock.tryLock(360000)) { try { var okgo = e.parameter.okgo; allmatches(); result = ContentService.createTextOutput('Ok!'); } catch (e) { result = ContentService.createTextOutput('Error!'); } finally { lock.releaseLock(); } return result; } else { return ContentService.createTextOutput('Timeout!'); } }
逻辑说明:用result变量存储要返回的内容,try块执行成功时设置为'Ok!',catch块捕获异常时设置为'Error!',finally块仅负责释放锁,最后统一返回result,这样就能根据执行情况返回对应结果。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

