Javascript - 触发错误

tey*_*non 4 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.
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ust 11

用途throw:

throw "Deliberate Error!";
Run Code Online (Sandbox Code Playgroud)


mac*_*ost 4

if (console) console.warn(...
Run Code Online (Sandbox Code Playgroud)

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

console && console.warn(...
Run Code Online (Sandbox Code Playgroud)

或者,如果您不喜欢在代码开头处检查控制台,请执行以下操作:

window.console = console || {warn: function(){}};
Run Code Online (Sandbox Code Playgroud)

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

另一种方法是创建自己的警告方法:

function warn(message) {
    console && console.warn(message);
}
Run Code Online (Sandbox Code Playgroud)

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

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