Try-catch语句解析
1、try-catch基本语句
任何具有影响力的web应用程序都具有一套特殊的错误处理程序,我们把可能会抛出错误的代码都放在try语句中,而把哪些用于错误除了的代码放在catch代码块中
作为JavaScript中处理异常的一种标准方式,基本的语法如下,与java中的语法完全相同
try{
//可能会导致错误的代码
}catch(error){
//在错误发生时应该怎么处理
}
栗子:
if(!!window.ActiveXObject || 'ActiveXObject' in window){
try{
plugin = new ActiveXObject("Card.ReadCard");
if(comV(version,loser) == -1){
return -1
}
return 1;
}
catch(){
return 0
}
}
应该注意的是,如果try块中任何代码发生了错误,机会立即退出代码执行过程,然后执行catch块,此时,catch块会接收到一个错误的信息对象,与其他语言中不同的是,即使你不想使用这个错误对象,也要给他起名字,这个对象包含的实际信息和数据类型会因浏览器而异,但又具有一个错误信息的message属性,还具有保存错误累型的name属性,当前所有的浏览器都支持这两个属性.
因此可以这么来
try{
window.someNonexistentFunction();
}catch(error){
alert(error.message);
}
2、finally子句
finally子句是可选的,是try-catch之中的,无论代码出错或者不出错都会执行
栗子:
function testFinally() {
try{
return 2;
}catch(error){
return 1;
}finally {
return 0;
}
}
testFinally();
在这个函数在try-catch语句中每一部分都放了一条return语句,从表面上来看,调用这个函数会返回2,因为返回2的return语句位于try语句中,执行语句又不会出错,由于最后含有finally语句会导致try直接执行语句return中的语句会小小,调用函数的时候返回的值是0,所以由finally在的时候,catch语句就变成了可选的。在使用finally的时候,try 和catch语句中的return都会被忽略掉,只有finally中的return会返回回来。