【问题标题】:Javascript on throw event?抛出事件的Javascript?
【发布时间】:2011-12-21 22:03:44
【问题描述】:
在 Javascript 中有没有办法监听 throw 事件?
即使执行这样的代码,我也希望能够调用事件处理程序:
var hi = "hi";
try {
throw hi;
}
catch (e) {
}
在 chrome(也可能是 firebug)中,您可以运行此代码并点击“break on all errors”,它会在该 throw 行上中断。他们到底是怎么做到的?那是在 Javascript 之外吗?
【问题讨论】:
标签:
javascript
events
plugins
throw
【解决方案1】:
他们的做法是 JavaScript 引擎不会继续出错,它会在所有错误时崩溃,就像你编译 c++ 一样,它不是语言功能,它是浏览器
【解决方案2】:
这不是异常事件,处理程序进入catch-block:
try {
//....
}
catch (e) {
// exception handling here
// or may be fire/trigger some event here
}
【解决方案3】:
您接受的答案不正确。
如果你有一个不在try {} catch() {} 块内发生的错误,那么JavaScript 执行将在那个时候真正中断。
但是,如果您将可能破坏的代码包装在 try {} catch() {} 中,则可以使用 re-throw 将由一个全局事件处理程序处理的错误:
window.onerror = function (error) {
// access `error` object
};
try {
// for example try to assign property to non-existing object
undefinedObj[property] = 1;
}
catch (error) {
// `error` object will be available in `onerror` handler above
throw new Error(error);
}