Index: /trunk/src/org/openstreetmap/josm/plugins/PluginProxy.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginProxy.java	(revision 8952)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginProxy.java	(revision 8953)
@@ -19,6 +19,14 @@
 public class PluginProxy extends Plugin {
 
+    /**
+     * The plugin.
+     */
     public final Object plugin;
 
+    /**
+     * Constructs a new {@code PluginProxy}.
+     * @param plugin the plugin
+     * @param info the associated plugin info
+     */
     public PluginProxy(Object plugin, PluginInformation info) {
         super(info);
@@ -26,5 +34,11 @@
     }
 
-    @Override public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+    private void handlePluginException(Exception e) {
+        PluginHandler.pluginLoadingExceptions.put(getPluginInformation().name, e);
+        BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+    }
+
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
         try {
             plugin.getClass().getMethod("mapFrameInitialized", MapFrame.class, MapFrame.class).invoke(plugin, oldFrame, newFrame);
@@ -32,9 +46,10 @@
             Main.debug("Plugin "+plugin+" does not define mapFrameInitialized");
         } catch (Exception e) {
-            BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+            handlePluginException(e);
         }
     }
 
-    @Override public PreferenceSetting getPreferenceSetting() {
+    @Override
+    public PreferenceSetting getPreferenceSetting() {
         try {
             return (PreferenceSetting) plugin.getClass().getMethod("getPreferenceSetting").invoke(plugin);
@@ -43,10 +58,11 @@
             return null;
         } catch (Exception e) {
-            BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+            handlePluginException(e);
         }
         return null;
     }
 
-    @Override public void addDownloadSelection(List<DownloadSelection> list) {
+    @Override
+    public void addDownloadSelection(List<DownloadSelection> list) {
         try {
             plugin.getClass().getMethod("addDownloadSelection", List.class).invoke(plugin, list);
@@ -54,5 +70,5 @@
             Main.debug("Plugin "+plugin+" does not define addDownloadSelection");
         } catch (Exception e) {
-            BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+            handlePluginException(e);
         }
     }
