当我在chrome控制台中尝试以下操作时,我将'未定义'作为'e'的值:
try{
var test=somethingInvalid();
}
catch(e){
console.log(e);
}
如何访问e?
的详细信息它有什么属性?
感谢。
卫生署。执行console.log('E is:'+ e)接缝工作。遗憾!
答案 0 :(得分:2)
好吧,它会返回undefined
,因为最后一行console.log
没有返回值。
try{
false = true;
}
catch(e){
console.log(e);
}
但是通过上述内容,您还会看到一个对象> Reference Error
,然后是下一行undefined
答案 1 :(得分:0)
根据MDN,它是throw
声明中的值。
https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch
例外标识符
如果在try块中抛出异常,
exception_var
(例如e
中的catch (e)
包含throw
语句指定的值。 您可以使用此标识符来获取有关异常的信息 被扔了。此标识符是catch子句的本地标识符。也就是说,它被创建了 何时输入catch子句,以及catch子句完成后 执行时,标识符不再可用。
答案 2 :(得分:0)
据我所知,Chrome确实输出了'e'的详细信息。我刚刚这样做了:
var err;
try { /* what you did */ }
catch (e) { err = e; }
Chrome会向您显示“e”的详细信息。
在这种情况下,您可以执行调用以查看以下内容:
答案 3 :(得分:0)
虽然提供的所有答案都非常有用,但我们所寻求的是:
try{
var test=somethingThatDoesntExist();
}
catch(e){
console.log(e.message);
}
e.message是我们想要记录的变量,因为它(据我们所知)包含了捕获的错误的字符串表示。
谢谢!
答案 4 :(得分:0)
我有一个自定义assert()
函数,它可以提取函数的堆栈跟踪(在所有现代浏览器中,IE除外):
if (!condition) {
try {
throw Error();
} catch (e) {
// Browsers Firefox, Chrome, Opera provide additional stack property;
// Check if it does not exist (IE);
stackTrace = (!e.stack) ? "No stack available" : e.stack;
self.reportError(errorType, stackTrace, message);
}
}
显然,我所展示的内容还有很多,但这个想法就在那里。