Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 32130)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 32139)
@@ -101,4 +101,7 @@
 
     protected Node createOrGetNode(Point p, String ele) throws MismatchedDimensionException, TransformException {
+        if (!p.isValid()) {
+            throw new IllegalArgumentException("Invalid point: " + p);
+        }
         Point p2 = (Point) JTS.transform(p, transform);
         LatLon key = new LatLon(p2.getY(), p2.getX());
@@ -157,6 +160,6 @@
                 try {
                     tempWay.addNode(createOrGetNode(ls.getPointN(i)));
-                } catch (Exception e) {
-                    Main.error(e.getMessage());
+                } catch (TransformException | IllegalArgumentException e) {
+                    Main.error("Exception for " + ls + ": " + e.getClass().getName() + ": " + e.getMessage());
                 }
             }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 32130)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 32139)
@@ -241,6 +241,4 @@
                         }
                     }
-                } catch (Throwable e) {
-                    e.printStackTrace();
                 } finally {
                     iterator.close();
@@ -254,7 +252,7 @@
             e.printStackTrace();
             throw e;
-        } catch (Throwable t) {
-            t.printStackTrace();
-            throw new IOException(t);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new IOException(e);
         }
         return ds;
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java	(revision 32130)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java	(revision 32139)
@@ -10,8 +10,8 @@
 
 import javax.swing.Action;
-import javax.swing.Icon;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -20,5 +20,4 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.actions.OpenLinkAction;
@@ -28,4 +27,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.licenses.License;
 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.tools.ImageProvider;
 
 public class OdDataLayer extends OsmDataLayer implements OdLayer, LayerChangeListener {
@@ -43,8 +43,11 @@
         this.handler = handler;
         for (Node node : data.getNodes()) {
-            if (this.bounds == null) {
-                this.bounds = new Bounds(node.getCoor());
-            } else {
-                this.bounds.extend(node.getCoor());
+            LatLon ll = node.getCoor();
+            if (ll != null) {
+                if (this.bounds == null) {
+                    this.bounds = new Bounds(ll);
+                } else {
+                    this.bounds.extend(ll);
+                }
             }
         }
