在javascript中
try{
   one
   two
   three
   four
   five
}
catch(e){
alert(e);
}
finally{}
错误流程中,如果执行到two出错,如何得知错误是在two,又如何从three继续执行try中的语句呢?
不会要每句嵌套try吧?

解决方案 »

  1.   

    每句嵌套可读性太差了,算了,还是自己定义吧.
    可惜用不了Err.Number,Err.Description.
    try{
        var errNumber=1;
        var oFSO = new ActiveXObject("Scripting.FileSystemObject");
            errNumber = 2;
        var oFile = oFSO.OpenTextFile("d:\\a.xml");
            errNumber = 3;
        alert(oFile.ReadAll());
        oFile.Close();
    }
    catch(e){
        switch(errNumber){
            case 1:
                alert("创建组件失败!");
                break;
            case 2:
                alert("打开文件失败!");
                break;
            case 3:
                alert("读取文件失败!");
                break;
            default:
                alert(e);
        }
    }
    finally{
        oFile = null;
        oFSO = null;
        self.close();
    }
      

  2.   

    如果嵌套的可读性差,那你可以把它封装成一个队列函数,像这样:
    <script>
    var trylist = function(){
        var args = Array.prototype.slice.call(arguments,0);
        while(args.length){
            var foo = args.shift();
            if(foo.constructor==Function){
                try{foo();}catch(e){alert(e.message);}
            }
        }
    };trylist(function(){alert(a);},function(){alert(b);},function(){alert(3);});
    </script>