diff --git a/ibm_vpd/wait-vpd-parsers.sh b/ibm_vpd/wait-vpd-parsers.sh
index 90f8b30..4f479da 100644
--- a/ibm_vpd/wait-vpd-parsers.sh
+++ b/ibm_vpd/wait-vpd-parsers.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 retries=100
 echo "Checking every 2s for active VPD parsers..."
-while [ $retries -ne 0 ]
+while [ "$retries" -ne 0 ]
 do
     sleep 2
     systemctl -q is-active ibm-vpd-parser@*.service
@@ -11,7 +11,7 @@
         echo "Done wait for active VPD parsers. Exit success"
         exit 0
     fi
-    retries=$((retries - 1))
+    retries="$((retries - 1))"
     echo "VPD parsers still running. Retries remaining: $retries"
 done
 echo "Exit wait for VPD services to finish with timeout"
diff --git a/ibm_vpd_utils.cpp b/ibm_vpd_utils.cpp
index d5d280c..e0e2cdb 100644
--- a/ibm_vpd_utils.cpp
+++ b/ibm_vpd_utils.cpp
@@ -1019,11 +1019,24 @@
     Binary vpdVector;
     vpdVector.resize(maxVPDSize);
     std::ifstream vpdFile;
-    vpdFile.open(file, std::ios::binary);
-
-    vpdFile.seekg(offset, std::ios_base::cur);
-    vpdFile.read(reinterpret_cast<char*>(&vpdVector[0]), maxVPDSize);
-    vpdVector.resize(vpdFile.gcount());
+    vpdFile.exceptions(std::ifstream::badbit | std::ifstream::failbit);
+    try
+    {
+        vpdFile.open(file, std::ios::binary);
+        vpdFile.seekg(offset, std::ios_base::cur);
+        vpdFile.read(reinterpret_cast<char*>(&vpdVector[0]), maxVPDSize);
+        vpdVector.resize(vpdFile.gcount());
+    }
+    catch (const std::ifstream::failure& fail)
+    {
+        std::cerr << "Exception in file handling [" << file
+                  << "] error : " << fail.what();
+        std::cerr << "EEPROM file size =" << std::filesystem::file_size(file)
+                  << std::endl;
+        std::cerr << "Stream file size = " << vpdFile.gcount() << std::endl;
+        std::cerr << " Vector size" << vpdVector.size() << std::endl;
+        throw;
+    }
 
     // Make sure we reset the EEPROM pointer to a "safe" location if it was DIMM
     // SPD that we just read.
@@ -1035,12 +1048,23 @@
                     "xyz.openbmc_project.Inventory.Item.Dimm") !=
                 item["extraInterfaces"].end())
             {
-                // moves the EEPROM pointer to 2048 'th byte.
-                vpdFile.seekg(2047, std::ios::beg);
-                // Read that byte and discard - to affirm the move
-                // operation.
-                char ch;
-                vpdFile.read(&ch, sizeof(ch));
+                try
+                {
+                    // moves the EEPROM pointer to 2048 'th byte.
+                    vpdFile.seekg(2047, std::ios::beg);
+                    // Read that byte and discard - to affirm the move
+                    // operation.
+                    char ch;
+                    vpdFile.read(&ch, sizeof(ch));
+                }
+                catch (const std::ifstream::failure& fail)
+                {
+                    std::cerr << "Exception in file handling [" << file
+                              << "] error : " << fail.what();
+                    std::cerr << "Stream file size = " << vpdFile.gcount()
+                              << std::endl;
+                    throw;
+                }
                 break;
             }
         }
diff --git a/impl.hpp b/impl.hpp
index 57a3528..280ba3b 100644
--- a/impl.hpp
+++ b/impl.hpp
@@ -78,14 +78,20 @@
         inventoryPath(path), vpdFilePath(vpdFilePath),
         vpdStartOffset(vpdStartOffset), out{}
     {
+#ifndef ManagerTest
+        vpdFileStream.exceptions(std::ifstream::badbit |
+                                 std::ifstream::failbit);
+#endif
         try
         {
             vpdFileStream.open(vpdFilePath,
                                std::ios::in | std::ios::out | std::ios::binary);
         }
-        catch (const std::fstream::failure& e)
+        catch (const std::fstream::failure& fail)
         {
-            std::cout << e.what();
+            std::cerr << "Exception in file handling [" << vpdFilePath
+                      << "] error : " << fail.what();
+            throw;
         }
     }
 
diff --git a/vpd-manager/editor_impl.cpp b/vpd-manager/editor_impl.cpp
index f0cfa2d..6015d7c 100644
--- a/vpd-manager/editor_impl.cpp
+++ b/vpd-manager/editor_impl.cpp
@@ -604,14 +604,26 @@
         // TODO: Figure out a better way to get max possible VPD size.
         Binary completeVPDFile;
         completeVPDFile.resize(65504);
-        vpdFileStream.open(vpdFilePath,
-                           std::ios::in | std::ios::out | std::ios::binary);
-
-        vpdFileStream.seekg(startOffset, std::ios_base::cur);
-        vpdFileStream.read(reinterpret_cast<char*>(&completeVPDFile[0]), 65504);
-        completeVPDFile.resize(vpdFileStream.gcount());
-        vpdFileStream.clear(std::ios_base::eofbit);
-
+        vpdFileStream.exceptions(std::ifstream::badbit |
+                                 std::ifstream::failbit);
+        try
+        {
+            vpdFileStream.open(vpdFilePath,
+                               std::ios::in | std::ios::out | std::ios::binary);
+            vpdFileStream.seekg(startOffset, std::ios_base::cur);
+            vpdFileStream.read(reinterpret_cast<char*>(&completeVPDFile[0]),
+                               65504);
+            completeVPDFile.resize(vpdFileStream.gcount());
+            vpdFileStream.clear(std::ios_base::eofbit);
+        }
+        catch (const std::ifstream::failure& fail)
+        {
+            std::cerr << "Exception in file handling [" << vpdFilePath
+                      << "] error : " << fail.what();
+            std::cerr << "Stream file size = " << vpdFileStream.gcount()
+                      << std::endl;
+            throw;
+        }
         vpdFile = completeVPDFile;
 
         if (objPath.empty() &&
diff --git a/vpd_tool_impl.cpp b/vpd_tool_impl.cpp
index ff0dfad..5610ced 100644
--- a/vpd_tool_impl.cpp
+++ b/vpd_tool_impl.cpp
@@ -683,13 +683,24 @@
         inventoryPath = jsonFile["frus"][fruPath][0]["inventoryPath"];
     }
 
-    vpdFileStream.open(fruPath,
-                       std::ios::in | std::ios::out | std::ios::binary);
-
-    vpdFileStream.seekg(startOffset, ios_base::cur);
-    vpdFileStream.read(reinterpret_cast<char*>(&completeVPDFile[0]), 65504);
-    completeVPDFile.resize(vpdFileStream.gcount());
-    vpdFileStream.clear(std::ios_base::eofbit);
+    vpdFileStream.exceptions(std::ifstream::badbit | std::ifstream::failbit);
+    try
+    {
+        vpdFileStream.open(fruPath,
+                           std::ios::in | std::ios::out | std::ios::binary);
+        vpdFileStream.seekg(startOffset, ios_base::cur);
+        vpdFileStream.read(reinterpret_cast<char*>(&completeVPDFile[0]), 65504);
+        completeVPDFile.resize(vpdFileStream.gcount());
+        vpdFileStream.clear(std::ios_base::eofbit);
+    }
+    catch (const std::ifstream::failure& fail)
+    {
+        std::cerr << "Exception in file handling [" << fruPath
+                  << "] error : " << fail.what();
+        std::cerr << "Stream file size = " << vpdFileStream.gcount()
+                  << std::endl;
+        throw;
+    }
 
     if (completeVPDFile.empty())
     {
