diff --git a/power-control-x86/src/power_control.cpp b/power-control-x86/src/power_control.cpp
index bcc0914..ce2902f 100644
--- a/power-control-x86/src/power_control.cpp
+++ b/power-control-x86/src/power_control.cpp
@@ -888,7 +888,7 @@
                         policy = std::get<std::string>(
                             propertiesChanged.begin()->second);
                     }
-                    catch (std::exception& e)
+                    catch (const std::exception& e)
                     {
                         phosphor::logging::log<phosphor::logging::level::ERR>(
                             "Unable to read power restore policy value");
@@ -951,7 +951,7 @@
                     delay =
                         std::get<uint16_t>(propertiesChanged.begin()->second);
                 }
-                catch (std::exception& e)
+                catch (const std::exception& e)
                 {
                     phosphor::logging::log<phosphor::logging::level::ERR>(
                         "Unable to read power restore delay value");
@@ -1007,7 +1007,7 @@
                     acBoot = std::get<std::string>(
                         propertiesChanged.begin()->second);
                 }
-                catch (std::exception& e)
+                catch (const std::exception& e)
                 {
                     phosphor::logging::log<phosphor::logging::level::ERR>(
                         "Unable to read AC Boot status");
@@ -1103,7 +1103,7 @@
         gpioLine.request(
             {"power-control", gpiod::line_request::EVENT_BOTH_EDGES});
     }
-    catch (std::exception&)
+    catch (const std::exception&)
     {
         std::string errMsg = "Failed to request events for " + name;
         phosphor::logging::log<phosphor::logging::level::ERR>(errMsg.c_str());
@@ -1142,7 +1142,7 @@
         gpioLine.request({__FUNCTION__, gpiod::line_request::DIRECTION_OUTPUT},
                          value);
     }
-    catch (std::exception&)
+    catch (const std::exception&)
     {
         std::string errMsg = "Failed to request " + name + " output";
         phosphor::logging::log<phosphor::logging::level::ERR>(errMsg.c_str());
@@ -1583,7 +1583,7 @@
             {
                 message.read(intfName, properties);
             }
-            catch (std::exception& e)
+            catch (const std::exception& e)
             {
                 phosphor::logging::log<phosphor::logging::level::ERR>(
                     "Unable to read host state");
@@ -2174,7 +2174,7 @@
                         }
                     }
                 }
-                catch (std::exception& e)
+                catch (const std::exception& e)
                 {
                     phosphor::logging::log<phosphor::logging::level::ERR>(
                         "Unable to read NMI source");
@@ -2248,7 +2248,7 @@
     {
         msg.read(interfaceName, propertiesChanged);
     }
-    catch (std::exception& e)
+    catch (const std::exception& e)
     {
         phosphor::logging::log<phosphor::logging::level::ERR>(
             "Unable to read Host Misc status");
@@ -2471,7 +2471,7 @@
         value = std::get<bool>(propertiesChanged.begin()->second);
         return true;
     }
-    catch (std::exception& e)
+    catch (const std::exception& e)
     {
         std::string logmsg =
             "exception while reading dbus property: " + lineName;
