5

我的脚本有几个 try-catch 块,用于发送有关错误消息的电子邮件。它有效,但只发送了一行简单的错误消息。我想要的是错误周围的行号和更多描述性消息,以帮助我确定错误发生的位置。

4

2 回答 2

12

你可以试试这个(我在某个地方偷的),首先将捕获的异常中的所有信息转换为字符串。第二个函数可用于包装一些代码,如果它抛出异常,则将其写入某处。

function catchToString (err) {
  var errInfo = "Catched something:\n"; 
  for (var prop in err)  {  
    errInfo += "  property: "+ prop+ "\n    value: ["+ err[prop]+ "]\n"; 
  } 
  errInfo += "  toString(): " + " value: [" + err.toString() + "]"; 
  return errInfo;
}
function catched (f) {
  try {
    f ();
  }
  catch(err) { 
    Logger.log (catchToString (err));
  }
}
于 2012-12-05T07:04:45.350 回答
0

上面的解决方案对我不起作用,我找到了这篇文章: https ://sites.google.com/a/mcpher.com/share/Home/excelquirks/gassnips/whereami

测试它的最简单的代码片段是:

function testError() {
  try {
    SpreadsheetApp.openById('Boooo');  
  } catch(err) {
    Logger.log(err.stack);
  }
}

您将记录此信息:

Exception: Unexpected error while getting the method or property openById on object SpreadsheetApp.
at testError (#Triggers:164:20)
at __GS_INTERNAL_top_function_call__.gs:1:8

代码行 (164)、文件 (#Triggers) 和函数名 (testError) 在这里。

我也试过这个库(https://github.com/RomainVialard/ErrorHandler),但现在寻找更简单的解决方案。

于 2020-04-29T06:06:04.490 回答