throw new Error – 学习画板

首页 » JavaScript » throw new Error

throw new Error

抛出错误也是一种调试代码的好方法。如果错误消息很具体,基本上就可以把它当作确定错误来源的依据。但这种错误消息必须能够明确给出导致错误的原因,才能省去其它调试操作。来看下面的函数:

function divide(num1, num2) {
    return num1 / num2;
}

这个简单的函数计算两个数的除法,但如果有一个参数不是数值,它会返回NaN。类似这样简单的计算如果返回NaN,就会在Web应用程序中导致问题。对此,可以在计算之前,先检测每个参数是否都是数值。例如:

function divide(num1, num2){
    if (typeof num1 != "number" || typeof num2 != "number") {
        throw new Error("divide(): Both arguments must be numbers.");
    }
    return num1 / num2;
}

如果有一个参数不是数值,就会抛出错误。错误消息中包含了函数的名字,以及导致错误的真正原因。浏览器只要报告了这个错误的消息,我们就可以立即知道错误来源及问题的性质。

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

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

可以用这个assert()函数代替某些函数中需要调试的if语句,以便输出错误的消息。下面是使用这个函数的例子。

function divide(num1, num2){
    assert(typeof num1 == "number" && typeof num2 == "number", 
           "divide(): Both arguments must be numbers.");
    return num1 / num2;
}
var result = divide(10, 23);
 result = divide("hi", 3);

可见,使用assert()函数可以减少抛出错误所需的代码量,而且也比前面的代码更容易看懂。

此文章发表在 JavaScript. 将 固定链接 加入收藏.