我知道try...catch是用来检测代码错误的,然后用事先准备的代码也就是catch进行替换,但是我就不能理解了,难道为了使用try..catch而专门错误写代码,然后用catch替换?如果写的代码错误了自己就能查找出来并改正,这个时候还使用try...catch有意义?

解决方案 »

  1.   

    你说的是js里的try..catch么?可以举个例子function(data) {
        try {
            var map = eval("(" + data + ")");
            for(var key in map) {
                // TODO ...
            }
        } catch (err) {
            alert("error occures");
        }
    }
    你并不知道参数data是不是格式正确,这个时候你需要用try..catch处理你的异常
    理解了么?
      

  2.   

    也就是说,try...catch的作用是在自己写代码时,对自己拿不准格式的代码进行检查用的?
      

  3.   


    ...try..catch就是异常处理,我觉得你把异常和bug混合一谈了~~
      

  4.   

    使用 try..catch 是为了程序的键壮性,因为函数中有时传入的是变量,你是无法保证不会出错的,使用了try..catch当出现不希望看到的错误时,就可以在catch部分定义处理的方法了。
      

  5.   

    那什么时候使用呢?难道每一段代码都要加上try...catch进行错误验证?亦或者在需要验证的代码中加入,确定代码正常后移除?真心不懂这玩意
      

  6.   


    ~~你觉得有可能出错的地方加一下不就是了啊,就像我1楼回的那个例子,比如说data是我页面输入的一个值,你如果不加try..catch的话如果我页面输入了个"[12",那么执行js方法的时候页面就会报错,页面js逻辑可能就跑不下去了,可以如果用了try..catch,当js执行出错的时候,就可以提示用户输入得不对,这就是代码的健壮性。
      

  7.   

    应该来说,try...catch要尽量少用。 
    象上面所说的转换json, 是一个特例, 无论用 eval , 还是 jQuery的parseJSON , 如果格式不对都会引起异常, 无法预先判断。但大多数情况下, 变量的类型可用 typeof 来获得的, 知道类型了再判断一下, 大多数的异常可以避免。if( typeof(v)!="undefined" )
    ......
      

  8.   

    那可不可以这样理解,密码就是一个变量,如果我输入了一个错误的密码(变量的值不正确),就会提示我密码错误(即catch)?
      

  9.   


    你这个是校验和异常处理不是一回事儿啊
    好吧可能是我的例子举得不好。总之你在js里,能不用try..catch就不用。
    try..catch是有需求的时候(如1楼例子)才用的。一般情况下你都可以根据你的程序需要做判断(如8楼例子),来避免页面js报错。
      

  10.   

    其实大多数情况,用 if就可以进行判断,尽量少使用try catch