Javascript - 触发错误

时间:2012-03-30 16:47:51

标签: javascript error-handling

问题

有没有办法触发自定义Javascript错误消息?在Chrome中,我发现console.warn[error,log]用于向浏览器发送消息。但是,这仅适用于Chrome(可能还有Firefox)。但是,此行本身会在Internet Explorer中触发错误。

我希望能够触发违反Javascript功能规则的错误。例如,将对象作为值的函数要求对象具有“dialog”属性。如果该属性不存在,我想触发错误消息“模态窗口:没有指定对话框ID。”

上下文

我正在构建一个可以协同工作的PHP类和Javascript类,以便我们的应用程序的程序员可以轻松创建统一且可靠的对话框。


示例代码

try {
    if (!params || !params['dialog']) {
        throw "NoDID";
    }
}
catch (error) {
    if (error == "NoDID") {
        //com.MySITE.js.warn("Modal Window: No dialog id specified.");
        //Trigger custom error message here.
    }
}

我想要将消息转到javascript窗口以便于开发人员调试。只是做“抛出”会导致“未捕获的自定义错误消息”。我不希望用户在页面上的任何内容中看到此内容。我希望它可以在js日志中供开发人员使用。

2 个答案:

答案 0 :(得分:10)

使用throw

throw "Deliberate Error!";

答案 1 :(得分:4)

if (console) console.warn(...

(或者您可以使用console.error,console.log,console.trace等)。或者你也可以这样做:

console && console.warn(...

或者,如果您不喜欢在任何地方检查控制台,请在代码的开头执行:

window.console = console || {warn: function(){}};

换句话说,如果浏览器没有控制台,请使用虚假的“警告”方法制作假的控制台。如果你这样做,你可以在整个代码中进行console.warn,而不必担心浏览器是否有控制台。

另一种方法是制作自己的警告方法:

function warn(message) {
    console && console.warn(message);
}

然后你就可以发出警告(“出了问题”)。

当然,如果你想真正找出IE用户何时获得用户,你需要制作自己的警告消息,这必须向服务器上的某个地方发出一个AJAX请求(以及某个地方)然后会发送电子邮件或其他东西)。