以下是示例代码:
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块的全部目的:捕获函数中的异常。至少......所以它用其他语言。
任何人都可以解释发生了什么?如何从函数/对象中捕获异常?
答案 0 :(得分:2)
您的“ViewError”函数不会返回任何内容。你因此抛出undefined
。 (编辑 - 你的小提琴与发布的代码不同 - 不要这样做!)
考虑到编写代码的方式,以一种我认为不正确的方式调用“ViewError”函数。我认为您需要throw new ViewError("Test error");
以确保创建新对象。
还有另一个问题:你期望你能够捕获从$(document).ready()
的调用中抛出的异常,但这不一定能够起作用。如果该代码运行时文档尚未就绪,那么您将不会获得例外,因为该调用会立即返回。当文档准备就绪时,您传入的函数将在稍后调用。