调试
在我们不确定代码是否会产生错误的时候,我们可以像我们之前学过的编程语言那样,使用try语句来调试错误。
这是我们很熟悉的一个模块,语法格式如下
try {
... //异常的抛出
} catch(e) {
... //异常的捕获与处理
} finally {
... //结束处理
}
但是这样格式的错误测试会出现一个问题,那就是,我们可能得到了一个错误,但是我们并不知道错误的类型,所以这个时候我们可以通过另外一个语句来自定义可能出现的错误
引用
throw 语句允许我们创建自定义错误。
正确的技术术语是:创建或抛出异常(exception)。
如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
示例代码
function myFunction() {
var message, x;
message = document.getElementById("message");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "值为空";
if(isNaN(x)) throw "不是数字";
x = Number(x);
if(x < 5) throw "太小";
if(x > 10) throw "太大";
}
catch(err) {
message.innerHTML = "错误: " + err;
}
}
需要注意的是,js中的throw与我们之前学习的编程语言中的throw throws的用法不一样,需要注意不能够混淆。
变量提升
如果是先使用了变量,再在后面的程序声明的话,解释器会悄悄的将函数声明和变量声明"提升"到方法体的最顶部,但是初始化的变量就不会被提升,只有声明的变量会被提升到函数最顶部。
如果程序员不能很好的理解变量提升,他们写的程序就容易出现一些问题。
为了避免这些问题,通常我们在每个作用域开始前声明这些变量,这也是正常的 JavaScript 解析步骤,易于我们理解。