Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 2200)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 2201)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.actions.DownloadAction;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.download.DownloadDialog.DownloadTask;
@@ -28,4 +29,5 @@
         private GpxData rawData;
         private final boolean newLayer;
+        private OsmTransferException lastException;
 
         public Task(boolean newLayer, BoundingBoxDownloader reader, ProgressMonitor progressMonitor) {
@@ -36,8 +38,18 @@
 
         @Override public void realRun() throws IOException, SAXException, OsmTransferException {
-            rawData = reader.parseRawGps(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+            try {
+                rawData = reader.parseRawGps(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+            } catch(OsmTransferException e) {
+                lastException = e;
+            } catch(Exception e) {
+                lastException = new OsmTransferException(e);
+            }
         }
 
         @Override protected void finish() {
+            if (lastException != null) {
+                ExceptionDialogUtil.explainException(lastException);
+                return;
+            }
             if (rawData == null)
                 return;
@@ -46,8 +58,9 @@
             GpxLayer layer = new GpxLayer(rawData, name);
             Layer x = findMergeLayer();
-            if (newLayer || x == null)
+            if (newLayer || x == null) {
                 Main.main.addLayer(layer);
-            else
+            } else {
                 x.mergeFrom(layer);
+            }
         }
 
@@ -66,6 +79,7 @@
 
         @Override protected void cancel() {
-            if (reader != null)
+            if (reader != null) {
                 reader.cancel();
+            }
         }
     }
@@ -105,6 +119,6 @@
             Task t = task.get();
             return t.getProgressMonitor().getErrorMessage() == null
-                ? ""
-                : t.getProgressMonitor().getErrorMessage();
+            ? ""
+                    : t.getProgressMonitor().getErrorMessage();
         } catch (Exception e) {
             return "";
