我目前正在使用rhyno javascript
库,在使用try catch blcok时我注意到以下问题。
以下是我的示例代码。
function main() {
var a =0;
try {
throw someException;
} catch (exception) {
var e = exception.name;
var error = exception;
return "Error is :"+error;
}
在以某种方式调试代码时,在catch中声明的名为 exception 的变量显示为 undefined 。但是当我尝试运行相同的代码时,异常被正确打印。我正在看的唯一问题是在调试代码时。
答案 0 :(得分:0)
Rhino在未引用时会优化掉局部变量exception
。因此,在调试器中,除非您使用它,否则将不会对其进行定义。我通常使用的解决方法与您执行的类似:
try {
doIt();
} catch (e) {
var ex = e;
// Now the value can be examined, because the assignment to a local variable causes the engine to require the variable in the scope
debugger;
}
例如,当没有在范围内实际访问变量时,这种情况也可能在Chrome DevTools中发生。