gpt4 book ai didi

javascript - 带有错误处理功能的外部扭曲函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:07 26 4
gpt4 key购买 nike

我有一个 Node 应用程序,用户可以提供自己的函数,并根据用户提供的某些 URL 路径调用此函数,如果出现错误,请求不会停止,所以我想以某种方式在调用者中获取错误(如果有)以停止响应,在这种情况下记录做什么?

以免说这是用户提供的功能,如果我们在目录中有该文件,则可以正常工作

delete: function (req,res,Path) {

var fileRelPath = 'C://'+ Path;
fs.unlinkSync(Path);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end("File was deleted");
},

我从其他模块调用此函数来调用该函数

plugin[fnName](req, res, Path);

如果文件不存在,我会收到错误并且进程调用不会停止...我应该在上面的 invoke 代码之后以某种方式检查是否调用了 res.end() ,如果不是显式结束它,如果是,如何检查它是否结束。

我的意思是类似

plugin[fnName](req, res, Path);
if(res.end was not invoked)
res.end("error occurred" )
maybe to provide additional data somehow about the err ..

最佳答案

您可以尝试以下操作。但该函数必须是同步的,就像您提供的示例一样。否则 try..catch 将不起作用。

var error;
try{
plugin[fnName](req, res, Path);
}
catch(e){
error = e
}

if(!res.headerSent){
res.send(error);
}

对于异步操作,您必须以 Node 回调样式重写函数:

deleteAsync: function (req,res,Path,done) {
var fileRelPath = 'C://'+ Path;
fs.unlink(Path, function(err){
if(err)
return done(err)
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end("File was deleted");
});


},

然后这样调用它们:

plugin[fnNameAsync](req, res, Path,function(err){
if(err)
res.send(err)
});

关于javascript - 带有错误处理功能的外部扭曲函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31399603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com