首先,我是木匠,而不是开发人员。
我正在使用Google表单来自动进行求职估算。我有一个脚本,用于格式化pdf格式的答案,以便可以将其发送给我的主要客户以供批准。 masterFunction()由表单提交触发。我编写的脚本可能不是正确的方法,但如下所示;
function masterFunction() {
aFunction();
bFunction();
cFunction();
...
};
function a(){
...
};
function b(){
...
};
...
如果脚本在任何子功能中遇到错误,我希望将之前的工作保存到另一个文件中并进行清理,以便可以运行下一个表单响应。之后,我可以返回并更正问题,然后运行脚本的其余部分。
我已经在代码中放置了捕获这些错误的位置,例如空白字段或空值,或者我未正确输入表单中的内容(但不是脚本错误,我不关心这些错误),这会向我发送有关这些问题的电子邮件警报,但其他人可能会将这些pdf发送给客户却看不到问题。
有没有一种方法可以停止masterFunction()。我发现的大多数内容都会停止子功能,例如break或try,但是只会将其发送回master函数,而master函数会继续并将其发送到下一个函数并运行到最后。
答案 0 :(得分:1)
一种选择是使用“ return”语句,该语句允许您从函数中返回值。调用return时,该函数立即结束,并可以选择将值传递回父级,您可以检查该值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
修改您的子函数以使用'return'语句,并在成功时返回'true'值,在失败时返回'false',然后检查每个结果:
功能:
return false;
在母版中:
var a_result = aFunction();
if(!a_result){
/*... optionally do "failed" tasks here ..*/
return //exit master function
}
另一种选择是“引发”异常,然后可以在主函数中“捕获”异常。如果您不关心哪个子功能失败,则引发异常可能会更好。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw
在儿童中:
throw "missing name!"
在母版中:
function masterFunction(){
try{
aFunction();
bFunction();
...
}catch(e){
logger.log('Caught error '+e);
}
}