gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:53:22 29 4
gpt4 key购买 nike

我正在开发一个应用程序,用户可以在其中上传KML文件,并使用LeaflettoGeoJSONAngular-Leaflet-Directive在屏幕上呈现路径。

我使用toGeoJSON.kml()将KML文本转换为GeoJSON对象,然后将其传递给Leaflet进行渲染。如果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变量中有错误,它将触发 LatLng第7行中的异常:
L.LatLng = function (lat, lng, alt) {
if (isNaN(lat) || isNaN(lng)) {
throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');
}

...

不幸的是,这个错误并没有被我的catch块困住,Leaflet继续渲染 map 图块而没有路径覆盖,并且用户得到的唯一通知是在控制台内部。我的目标是在上传无效文件时让用户看到更明显的通知。

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

最佳答案

这段代码在回调函数中吗?您是否通过ajax调用获取geojson数据?异步回调方法可能会很棘手,而不是按预期的顺序进行错误捕获。
上一篇文章非常有趣:
Catch statement does not catch thrown error

关于javascript - 传单-可能捕获应用程序引发的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830873/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com