我自己随便写了一个天气的网页,在使用try..catch..来处理地区不正确等问题的时候发现,网页在电脑浏览器内可以实现并且没有任何报错,但在手机浏览器内没法运行。
success: function (data) {
                    var res = eval("(" + data + ")");
                    try {
                        $("#header").text(res.data.city);
                        for (var i = 0; i < 5; i++) {
                            $(".day td:eq(" + i + ")").text(res.data.forecast[i].date);
                            $(".high td:eq(" + i + ")").text(res.data.forecast[i].high);
                            $(".low td:eq(" + i + ")").text(res.data.forecast[i].low);
                            $(".wind td:eq(" + i + ")").text(res.data.forecast[i].fengxiang);
                            $(".type td:eq(" + i + ")").text(res.data.forecast[i].type);
                        }
                    }catch{
                        alert("地区不正确!");
                    }

                    //$("table").text(data);
                },去掉try..catch之后手机浏览器便能实现功能
success: function (data) {
                    var res = eval("(" + data + ")");
                        $("#header").text(res.data.city);
                        for (var i = 0; i < 5; i++) {
                            $(".day td:eq(" + i + ")").text(res.data.forecast[i].date);
                            $(".high td:eq(" + i + ")").text(res.data.forecast[i].high);
                            $(".low td:eq(" + i + ")").text(res.data.forecast[i].low);
                            $(".wind td:eq(" + i + ")").text(res.data.forecast[i].fengxiang);
                            $(".type td:eq(" + i + ")").text(res.data.forecast[i].type);
                        }
                    //$("table").text(data);
                },

解决方案 »

  1.   

    try-catch 的基本语法是
    try {
        //可能会导致错误的代码
    } catch (error) {
        //在错误发生时怎么处理
    }
    你少了catch 后面的一对小括号,还有小括号里的 错误对象
    如果try块中的任何代码发生了错误,就会立即退出代码执行过程,然后接着执行catch块,此时,catch块会接收到一个包含错误信息的对象。与在其他语言中不同的是,即使你不想使用这个错误对象,也要给它起个名字。
    try {
        adddlert("欢迎光临!");
    }
    catch(err) {
        document.getElementById("demo").innerHTML = err.message;
    }
      

  2.   

    同上,catch要捕捉到错误信息,这个就是catch方法的参数
      

  3.   

     try {
                            $("#header").text(res.data.city);
                            for (var i = 0; i < 5; i++) {
                                $(".day td:eq(" + i + ")").text(res.data.forecast[i].date);
                                $(".high td:eq(" + i + ")").text(res.data.forecast[i].high);
                                $(".low td:eq(" + i + ")").text(res.data.forecast[i].low);
                                $(".wind td:eq(" + i + ")").text(res.data.forecast[i].fengxiang);
                                $(".type td:eq(" + i + ")").text(res.data.forecast[i].type);
                            }
                        }catch{
                            alert("地区不正确!");
                        }
    这个写法在电脑上应该也是有问题的,你用的是什么浏览器。
     try {
                            $("#header").text(res.data.city);
                            for (var i = 0; i < 5; i++) {
                                $(".day td:eq(" + i + ")").text(res.data.forecast[i].date);
                                $(".high td:eq(" + i + ")").text(res.data.forecast[i].high);
                                $(".low td:eq(" + i + ")").text(res.data.forecast[i].low);
                                $(".wind td:eq(" + i + ")").text(res.data.forecast[i].fengxiang);
                                $(".type td:eq(" + i + ")").text(res.data.forecast[i].type);
                            }
                        }catch(e){
                            alert("地区不正确!");
                        }
    catch的后面要加(e)表示捕获到异常的对象。
      

  4.   

    谢谢各位了,确实catch那里的问题。太粗心了……