javascript
一旦出现了异常,如果没有进行异常捕获处理的话,代码就停止在出现异常的地方不会继续往下运行了, 如果进行了异常的捕获处理,javascript
代码在运行到有捕获异常的代码时,就算代码出错了,也会继续往下运行代码,不会停止。 我们可以在捕获到异常时做相应的设置或者提示用户,这样的用户体验会比较好。
javascript
中也有异常处理,而且与Java中的一模一样。
捕获异常使用try...catch...finally
语句。 其中finally
语句可有可无,finally
语句是无论会不会抛出异常,最终都会执行的。
try...catch...finally
语句的形式如下:
try {
//语句
} catch(e) {
//语句
} finally {
//语句
}
出现异常时候,会抛出一个e
对象,它是Error对象的实例。
示例:
var x = 0;
try {
x = 5 / x;
x = 5 + x;
} catch(e) {
console.log('所在的行:' + e.lineNumber + ',异常信息:' + e.message + ',异常名称:' + e.name);
} finally {
console.log('finally');
}
console.log('after finally');
javascript
不仅允许我们捕获异常,还可以让我们抛出异常。抛出异常同Java中的一样,使用throw
关键字。
与Java中稍微不同的是:在Java中,当throw
关键字不在try块中的时候,必须在方法声明中使用throws
关键字进行声明。 而javascript
中压根就没有throws
关键字,所以在javascript
中throw
关键字可使用在任何地方。
throw
关键字的使用格式:
throw errorInstance;
errorInstance
可以是任意类型的,但通常是Error对象的实例。
示例1:
try {
throw new Date();
} catch(e) {//这里的e对象就是Date的实例,而不是Error的实例了
document.write(e.toLocaleString());
} finally {
console.log('finally');
}
示例2:
function xxoo() {
throw new Error('爽死了!');
}
try {
xxoo();
} catch(e) {
document.write('所在的行:' + e.lineNumber + ',异常信息:' + e.message + ',异常名称:' + e.name);
} finally {
console.log('finally');
}