diff --git a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java
index e772e4c..9308e1a 100644
--- a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java
+++ b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java
@@ -1733,8 +1733,6 @@
             AccessController.checkPermission(m_adminPerm);
         }
 
-        BundleException rethrow = null;
-
         BundleInfo info = bundle.getInfo();
         if (info.getState() == Bundle.UNINSTALLED)
         {
@@ -1750,7 +1748,7 @@
         }
         catch (BundleException ex)
         {
-            rethrow = ex;
+            fireFrameworkEvent(FrameworkEvent.ERROR, bundle, ex);
         }
 
         // Remove the bundle from the installed map.
@@ -1785,11 +1783,6 @@
 
         // Fire bundle event.
         fireBundleEvent(BundleEvent.UNINSTALLED, bundle);
-
-        if (rethrow != null)
-        {
-            throw rethrow;
-        }
     }
 
     //
@@ -2309,6 +2302,8 @@
     **/
     private static Class loadClassUsingClass(Class clazz, String name)
     {
+        Class loadedClass = null;
+
         while (clazz != null)
         {
             // Get the class loader of the current class object.
@@ -2330,10 +2325,10 @@
             Class[] ifcs = clazz.getInterfaces();
             for (int i = 0; i < ifcs.length; i++)
             {
-                clazz = loadClassUsingClass(ifcs[i], name);
-                if (clazz != null)
+                loadedClass = loadClassUsingClass(ifcs[i], name);
+                if (loadedClass != null)
                 {
-                    return clazz;
+                    return loadedClass;
                 }
             }
 
