shill: Re-throw certain DBus exceptions.

The WiFi class catches some DBus exceptions.  CL/21904 did a LOG(FATAL)
for these exceptions, defeating the catcher in WiFi.  This CL changes
LOG(FATAL) to LOG(ERROR) and re-throws the exception.

This CL can (and should) be reverted when crosbug.com/30584 is resolved.

BUG=chromium-os:30566
TEST=Manual.  Ran shill on Alex.  It crashes without this CL;
doesn't crash with it.  Also ran unit tests.

Change-Id: I781ecb525890f86d30954b30c813c6fc7ac94da2
Reviewed-on: https://gerrit.chromium.org/gerrit/22136
Commit-Ready: Gary Morain <gmorain@chromium.org>
Reviewed-by: Gary Morain <gmorain@chromium.org>
Tested-by: Gary Morain <gmorain@chromium.org>
diff --git a/supplicant_interface_proxy.cc b/supplicant_interface_proxy.cc
index c4d6275..0ab4819 100644
--- a/supplicant_interface_proxy.cc
+++ b/supplicant_interface_proxy.cc
@@ -33,9 +33,9 @@
   try {
     return proxy_.AddNetwork(args);
   } catch (const DBus::Error &e) {
-    LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what()
+    LOG(ERROR) << "DBus exception: " << e.name() << ": " << e.what()
                << " args keys are: " << DBusProperties::KeysToString(args);
-    return ::DBus::Path();  // Make the compiler happy.
+    throw;  // Re-throw the exception.
   }
 }
 
@@ -44,7 +44,8 @@
   try {
     return proxy_.ClearCachedCredentials();
   } catch (const DBus::Error &e) {
-    LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what();
+    LOG(ERROR) << "DBus exception: " << e.name() << ": " << e.what();
+    throw;  // Re-throw the exception.
   }
 }
 
@@ -53,7 +54,8 @@
   try {
     return proxy_.Disconnect();
   } catch (const DBus::Error &e) {
-    LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what();
+    LOG(ERROR) << "DBus exception: " << e.name() << ": " << e.what();
+    throw;  // Re-throw the exception.
   }
 }
 
@@ -91,8 +93,9 @@
   try {
     return proxy_.Scan(args);
   } catch (const DBus::Error &e) {
-    LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what()
+    LOG(ERROR) << "DBus exception: " << e.name() << ": " << e.what()
                << " args keys are: " << DBusProperties::KeysToString(args);
+    throw;  // Re-throw the exception.
   }
 }
 
@@ -110,8 +113,9 @@
   try {
     return proxy_.FastReauth(enabled);
   } catch (const DBus::Error &e) {
-    LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what()
+    LOG(ERROR) << "DBus exception: " << e.name() << ": " << e.what()
                << "enabled: " << enabled;
+    throw;  // Re-throw the exception.
   }
 }
 
@@ -120,8 +124,9 @@
   try {
     return proxy_.ScanInterval(scan_interval);
   } catch (const DBus::Error &e) {
-    LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what()
+    LOG(ERROR) << "DBus exception: " << e.name() << ": " << e.what()
                << " scan interval: " << scan_interval;
+    throw;  // Re-throw the exception.
   }
 }