api通话期间捕获错误无效?

时间:2016-05-18 05:31:27

标签: javascript jquery json api exception-handling

我正在尝试对ip-api.com/json进行API调用,但据我所知,它被广告拦截器阻止。因此我想添加一个try-catch来查看它何时失败,以便我可以用另一种方式解决这个问题,但是脚本似乎没有进入catch块,而只是抛出错误。

有没有办法捕捉这里抛出的异常?

$(document).ready(function() {

    try {
        /* Try getting the request with the required parameters
            Otherwise use default ones */
        jQuery.getJSON(API_Location, "", function(position) {
            if (position.lat && position.lon) {
                updateWeather(position);
            } else {
                updateWeather({"lat":DEFAULT_LAT, "lon":DEFAULT_LON});
            }
        });
    } catch(err) {
        /* TODO display warning message */
        console.log('option b');
        updateWeather({"lat":DEFAULT_LAT, "lon":DEFAULT_LON});
    }
});

永远不会触发catch块,而是抛出异常:

  

jquery.min.js:4获取http://ip-api.com/json net :: ERR_BLOCKED_BY_CLIENT

1 个答案:

答案 0 :(得分:1)

使用默认完成,无法触发错误。

API_Location=' http://ip-api.com/json1';
        $.getJSON( API_Location)
          .done(function( position ) {
              if (position.lat && position.lon) {
                updateWeather(position);
            } else {
                updateWeather({"lat":DEFAULT_LAT, "lon":DEFAULT_LON});
            }
          })
          .fail(function( jqxhr, textStatus, error ) {
            var err = textStatus + ", " + error;
            console.log( "Request Failed: " + err );
        });