《JavaScript高级程序设计》读书笔记(四)

wshunli
2017-11-08 / 0 评论 / 134 阅读 / 正在检测是否收录...

《JavaScript高级程序设计》读书笔记

(四) 学习在浏览器中进行实际开发时的错误调试技巧。(17章)

第十七章 错误处理与调试

错误处理

try-catch 语句

try-catch 语句 和 Java 很类似。

function testFinally(){
    try {
        return 2;
    } catch (error){
        return 1;
    } finally {
        return 0;
    }
}
function testWithoutFinally(){
    try {
        return 2;
    } catch (error){
        return 1;
    }
}
alert(testFinally());
alert(testWithoutFinally());

我们把可能会抛出错误的语句放到 try 语句中,处理错误的代码放到 catch 块中,finally 语句块无论如何都会执行。

抛出错误:与 try-catch 语句相配的还有一个 throw 操作符,用于随时抛出自定义错误 。

在遇到 throw 操作符时,代码会立即停止执行。仅当有 try-catch 语句捕获到被抛出的值时,代码才回继续执行。

if (!(values instanceof Array)){
    throw new Error("process(): Argument must be an array.");
}

捕获错误的目的在于避免浏览器以默认方式处理它们;而抛出错误的目的在于提供错误发生具体原因的消息。

常见的错误类型:类型转换错误、数据类型错误、通信错误。

调试技术

将消息记录到控制台:通过 console 对象向 JavaScript 控制台中写入消息。

error(message): 将错误消息记录到控制台
info(message): 将信息性消息记录到控制台
log(message): 将一般消息记录到控制台
warn(message): 将警告消息记录到控制台

将消息记录到当前页面:在页面中开辟一小块区域,用以显示消息。

抛出错误:自定义 assert() 函数。
两个参数,一个是求值结果应该为true的条件,另一个是条件为false时要抛出的错误。

function assert(condition, message){
    if (!condition){
        throw new Error(message);
    }
}
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);
0

评论 (0)

取消