我在try-catch中包含了一个完整的函数,但是仍然收到错误通知。
该捕获应该忽略此错误,因为它是良性的。即,在捕获错误后,我不会重新抛出该错误。
function myOnEdit(event){
try{
//stuff
}catch(e){
if((e.message).indexOf("Must be") != -1){
return;
}else{
//e-mail me the error and display a user-friendly dialogue to the end user
}
}
}
我希望不会收到任何包含“必须”字样的错误的通知。此代码与具有数据验证功能的电子表格绑定在一起,并且所有数据验证错误均自定义为错误消息“必须”,后跟所需格式。例如,一列列出了电话号码,因此数据验证错误为“必须为###-###-####”。
相反,我收到了自动的Google电子邮件“失败摘要”,其中列出了有关这些数据验证的错误:
您的脚本SED代码-PRD最近未能成功完成。故障摘要如下所示。要配置此脚本的触发器,或更改您的设置以接收将来的故障通知,请单击此处。
该脚本由文档SED-PRD使用。
摘要:
错误消息计数
必须为###-###-####。 7
开始功能错误消息触发结束
19-5-14上午5:55 myOnEdit必须为###-###-####。编辑5/14/19 5:55
其他人正在使用此电子表格(我几乎不使用它-我只是技术人员),而且我无法重现此错误。大约有70个人使用它,他们也不精通技术-即使我要求他们,他们也可能不会告诉我他们正在遇到此错误。
但是,错误通知电子邮件分散了潜在的“实际”错误。因此,我不仅要关闭错误通知。
这些错误也未在Stackdriver Error Reporting中列出,这令人困惑。我知道它们正在发生的唯一原因是由于电子邮件通知。
答案 0 :(得分:0)
GoogleScripts(.gs)与标准js不同。
在这种情况下,您不需要e.message
。应该是:
if((e).indexOf("Must be") != -1){
如果您使用(e).indexOf
,则以下测试应通过,但应以(e.message).indexOf
失败:
function onMyEdit(input){
var inputString = ''+input;
if(inputString.indexOf(3)!=-1) {
throw "Must be";
} else {
Logger.log('success', input);
return 0;
}
}
function testfunction(cell) {
try {
onMyEdit(cell);
} catch (e) {
if((e).indexOf("Must be")!==-1) {
return 'failure';
}
}
return 'success';
}