JavaScript从函数或对象中捕获异常
JavaScript Catching exception from within function or object
我遇到了一个很烦人的问题。我无法捕捉函数内部抛出的错误。老实说,如果不是这样的话,我也不太在乎这同样适用于从JavaScript对象中抛出错误。
这是示例代码:
http://jsfiddle.net/TxsHK/1/(您需要firebug控制台来测试此代码)
function ViewError($CONTENT){
this.content = $CONTENT;
return this.content;
};
try{
$(document).ready(function() {
//--------------
throw ViewError('Test error');
//--------------
});//$(document).ready(function() {
}catch (e) {
if (e instanceof ViewError) {
console.info(e.message);
}
else{
console.warn(e.message);
}
}
给出错误
TypeError: e is undefined
为什么?函数(或对象)抛出的错误应该是完全可捕获的。这就是try-catch块的全部目的:捕获函数中的异常。至少其他语言也是如此。
有人能解释发生了什么吗?如何从函数/对象中捕获异常?
您的"ViewError"函数不会返回任何内容。因此,您正在抛出undefined
。(edit—您的小提琴与发布的代码不同-不要这样做!)
考虑到代码的编写方式,"ViewError"函数的调用方式我认为是不正确的。我认为您需要throw new ViewError("Test error");
来确保创建一个新对象。
还有另一个问题:您希望能够捕获从对$(document).ready()
的调用中抛出的异常,但这不一定有效。如果代码运行时文档还没有准备好,那么您将不会得到任何异常,因为调用会立即返回。您传入的函数将在文档准备好后调用。
相关文章:
- 错误:180:引发异常(“dev!”):- 和错误:> aqsrv> 70:捕获异常(空) - 错误 -1
- 捕获异常,而不是比较性能的数组值
- Javascript-捕获对对象属性的访问
- 适用于Android的PhoneGap相机API-未捕获异常
- jQuery deferred:在fail()回调中抛出并捕获异常
- Safari 在尝试使用 Javascript try/catch 访问父窗口对象时未捕获异常
- 在 JS 中捕获异常
- 如何在jQuery中修复此错误未捕获异常:语法错误,无法识别的表达式:语法错误,无法识别的表达式:标签
- 主干.js - n捕获异常:语法错误:函数构造函数:无法编译函数
- Nodejs 中用于获取调用的未捕获异常错误
- 如何使工作 Chrome 扩展程序的未捕获异常处理程序(由于 CORS 保护而不起作用)
- javascript异常对象格式
- React-如何只捕获父对象's onClick事件,而不是子事件
- 带有Select2的FormValidation未捕获异常:未为Select2定义查询函数
- 在JavaScript中定义函数时捕获异常
- 如何为 Backbone.save 捕获 xhr 对象
- Knockout:在提交和单击绑定中捕获异常
- 由eval()触发的异常对象的标准字段是什么?
- 在其初始化器对象中捕获异常
- JavaScript从函数或对象中捕获异常