1

将消息记录到控制台

console

IE8、Firefox、Chrome和Safari来说,可通过console对象向JavaScript控制台中写入消息。对象有下列方法:

  • error(message):将错误消息记录到控制台

  • info(message):将信息消息记录到控制台

  • log(message):将一般消息记录到控制台

  • warn(message):将警告消息记录到控制台

如:

console.log("loging");
console.info("infomation");
console.warn("warning");
console.error("bug");

Opera10.5 之前的版本可以通过opera.postError()接收一个参数输出任何信息。

Java

还有一种方案是使用LiveConnect,也就是JavaScript中运行Java代码。

LiveConnect

向JavaScript控制台写入消息的统一接口:

function log(message) {
    if (typeof console == "object") {
        console.log(message);
    } else if (typeof opera == "object") {
        opera.postError(message);
    } else if (typeof java == "object" && typeof java.lang == "object") {
        java.lang.System.out.println(message);
    }
}

将消息记录到当前页面

这种方法针对IE7等不支持JavaScript控制台的浏览器十分有用:

function log(message) {
    var console = document.getElementById("debuginfo");
    if (console === null) {
        console = document.createElement("div");
        console.id = "debuginfo";
        document.body.appendChild(console);
    }
    console.innerHTML += "<p>" + message + "</p>";
}

抛出错误

对大型应用程序来说,自定义的错误通常使用assert()函数抛出。对这个函数接受两个参数,一个是求值结果为true的条件,另一个是条件为false时要抛出的错误。

function assert(condition, message) {
    if (!condition) {
        throw new Error(message);
    }
}

如:

function assert(condition, message) {
    if (!condition) {
        throw new Error(message);
    }
}

function sum(num1, num2) {
    assert((typeof num1 == "number") && (typeof num2 == "number"), "divide(): Both arguments must be numbers.");
    console.log(num1 + num2);
}

sum(321, "abc"); //Uncaught Error: divide(): Both arguments must be numbers.

常见的IE错误

  • 操作终止

  • 无效字符

  • 未找到成员

  • 未知运行时错误

  • 语法错误

  • 系统无法找到指定资源


JS菌
6.4k 声望2k 粉丝