Try-catch语句解析

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会返回回来。

猜你喜欢

转载自blog.csdn.net/Alive_tree/article/details/87938953