我正在使用console.error()函数记录由应用程序脚本制作的表格附件的错误。例如:
1 var a = null;
2 a.toString();
3 } catch(error) {
4 console.error('Function_1(): ' + error);
5 }
但是,我的函数很大,当出现类似“ can't use toString() on null
”的错误时,我不确定问题出在哪里。
我尝试将其与throw一起使用:
1 var a = null;
2 a.toString();
3 } catch(error) {
4 throw 'Function_1(): '+error;
5 }
但是然后,我得到了抛出的行数:
can't use toString() on null at line 4
,而问题出在line 2
。
我查看了其他线程,例如: How do you pass back a custom error message from google apps scripts?
但是,它并不能回答如何提供正确的行号。
答案 0 :(得分:2)
使用e.lineNumber
,其中e
是一个错误对象实例。示例:
function myFunction() {
try {
throw new Error('Error message');
} catch(e) {
console.error(e.lineNumber)
}
}
注意:您可以使用e
或任何其他适合您的编码样式的变量名称来代替error
。
相关
答案 1 :(得分:2)
如果您检查 let lang = this.$store.state.lang
if(!lang){
lang = 'nl'
}
if (typeof name === 'object') {
if (typeof name[lang] === 'string' && name[lang]) { // <- null is not an object (evaluating 't[e]')
return name[lang]
}
return name['nl'] ? name['nl'] : ''
}
return ''
块收到的Error
对象error
,您会发现它具有几个可以访问的属性:
catch
Stackdriver日志示例:
因此,您可以在日志中包括错误的完整堆栈跟踪以及文件和行号:
try {
...
} catch (error) {
const parts = {};
for (var i in error) {
parts[i] = error[i];
}
console.error({message: "Apps Script error object decomposition", error: error, parts: parts});
}