Javascript 传单-可能捕获应用程序引发的异常

Javascript 传单-可能捕获应用程序引发的异常,javascript,error-handling,try-catch,leaflet,Javascript,Error Handling,Try Catch,Leaflet,我正在开发一个应用程序,用户可以上传一个KML文件,并使用、&在屏幕上呈现路径 我使用toGeoJSON.kml()将kml文本转换为GeoJSON对象,然后将其传递给传单进行渲染。如果KML是有效的,这将非常有效。然而,如果KML格式不正确,那么它的工作效果就不太好toGeoJSON继续将数据呈现到对象中,忽略发生的任何错误 var pathData = toGeoJSON.kml(kmlDom); var latlng = []; for (var feature in pathData.

我正在开发一个应用程序,用户可以上传一个KML文件,并使用、&在屏幕上呈现路径

我使用
toGeoJSON.kml()
将kml文本转换为GeoJSON对象,然后将其传递给传单进行渲染。如果KML是有效的,这将非常有效。然而,如果KML格式不正确,那么它的工作效果就不太好
toGeoJSON
继续将数据呈现到对象中,忽略发生的任何错误

var pathData = toGeoJSON.kml(kmlDom);
var latlng = [];

for (var feature in pathData.features) {
    var paths = pathData.features[feature].geometry.coordinates;
    if (paths.length > 1) {
        for (var path in paths) {
           var prospectiveCoords = pathData.features[feature].geometry.coordinates[path];
           var coordinate = L.GeoJSON.coordsToLatLng(prospectiveCoords);
            latlng.push(coordinate);
        }
    }
}
try {
    map.fitBounds(latlng); //Instance of L.getMap()

    angular.extend($scope, {
        geojson : {
            data : pathData,
            style : {
                stroke : true,
                weight : 5
            }
        }
    });

} catch (e) {
    $log.error(e.message);
    $window.alert(e.message);
}
在我的特定问题中,如果
pathData
变量中有错误,它将触发第7行中的异常:

不幸的是,这个错误并没有被我的catch块捕获,传单继续在没有路径覆盖的情况下渲染地图分幅,用户得到的唯一通知是在控制台内部。我的目标是在上传无效文件时,有一个更明显的用户通知


是否可以在应用程序级别截获错误?

此代码是否在回调函数中?您是否通过ajax调用获取geojson数据?异步回调方法可能会执行非常棘手的错误捕获,并且不会按照预期的顺序执行。 前一篇文章非常有趣:

嗯,很有趣的建议。这段代码位于loapedata.getMap()的promise成功处理程序中,geojson数据来自非异步服务调用,因此理论上,在执行此代码块时,任何异步调用都已解决。我刚刚向各自的github回购协议提出了这个问题,并将更新任何解决方案。
L.LatLng = function (lat, lng, alt) {
    if (isNaN(lat) || isNaN(lng)) {
        throw new Error('Invalid LatLng object: (' + lat + ', ' + lng +   ')');
    } 

    ...