diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/JavaCodeGeneratorUtil.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/JavaCodeGeneratorUtil.java
index ffff64d..10c4b6f 100644
--- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/JavaCodeGeneratorUtil.java
+++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/JavaCodeGeneratorUtil.java
@@ -30,6 +30,8 @@
 import org.onosproject.yang.compiler.translator.exception.TranslatorException;
 import org.onosproject.yang.compiler.utils.io.YangPluginConfig;
 
+import com.google.common.base.Throwables;
+
 import java.io.IOException;
 
 import static org.onosproject.yang.compiler.datamodel.TraversalType.CHILD;
@@ -136,7 +138,8 @@
                 } catch (Exception e) {
                     e.printStackTrace();
                     close(codeGenNode, yangPlugin, rootNode);
-                    throw new TranslatorException(e.getMessage());
+                    Throwables.propagateIfInstanceOf(e, TranslatorException.class);
+                    throw new TranslatorException(e);
                 }
                 curTraversal = SIBLING;
                 codeGenNode = codeGenNode.getNextSibling();
@@ -148,7 +151,8 @@
                 } catch (Exception e) {
                     e.printStackTrace();
                     close(codeGenNode, yangPlugin, rootNode);
-                    throw new TranslatorException(e.getMessage());
+                    Throwables.propagateIfInstanceOf(e, TranslatorException.class);
+                    throw new TranslatorException(e);
                 }
                 curTraversal = PARENT;
                 codeGenNode = codeGenNode.getParent();
diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaEnumerationTranslator.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
index bad19ff..1d0b7c3 100644
--- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
+++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
@@ -119,7 +119,7 @@
             tempFileHandle.getEnumTempFiles().setEnumClass(true);
         } catch (IOException e) {
             throw new TranslatorException(getErrorMsg(FAIL_AT_ENTRY, this,
-                                                      e.getLocalizedMessage()));
+                                                      e.getLocalizedMessage()), e);
         }
     }
 
@@ -134,7 +134,7 @@
             generateJava(GENERATE_ENUM_CLASS, this);
         } catch (IOException e) {
             throw new TranslatorException(getErrorMsg(FAIL_AT_EXIT, this,
-                                                      e.getLocalizedMessage()));
+                                                      e.getLocalizedMessage()), e);
         }
     }
 }
diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaListTranslator.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaListTranslator.java
index 7ffbbe7..030674c 100644
--- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaListTranslator.java
+++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaListTranslator.java
@@ -116,8 +116,8 @@
                     "Failed to prepare generate code entry for list node " +
                             getName() + " in " +
                             getLineNumber() + " at " +
-                            getCharPosition()
-                            + " in " + getFileName() + " " + e.getLocalizedMessage());
+                            getCharPosition() +
+                            " in " + getFileName(), e);
         }
     }
 
@@ -134,8 +134,8 @@
             throw new TranslatorException("Failed to generate code for list node " +
                                                   getName() + " in " +
                                                   getLineNumber() + " at " +
-                                                  getCharPosition()
-                                                  + " in " + getFileName() + " " + e.getLocalizedMessage());
+                                                  getCharPosition() +
+                                                  " in " + getFileName(), e);
         }
     }
 }
diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaTypeDefTranslator.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
index 1caf6e8..80f5c65 100644
--- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
+++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
@@ -138,8 +138,9 @@
         } catch (IOException e) {
             throw new TranslatorException(
                     "Failed to prepare generate code entry for typedef node " + getName()
-                            + "in " + getLineNumber() + " at " + getCharPosition() + " in " + getFileName()
-                            + " " + e.getLocalizedMessage());
+                            + " in " + getLineNumber() +
+                            " at " + getCharPosition() +
+                            " in " + getFileName(), e);
         }
     }
 
@@ -155,8 +156,9 @@
         } catch (IOException e) {
             throw new TranslatorException(
                     "Failed to prepare generate code for typedef node " + getName()
-                            + "in " + getLineNumber() + " at " + getCharPosition() + " in " + getFileName()
-                            + " " + e.getLocalizedMessage());
+                            + " in " + getLineNumber() +
+                            " at " + getCharPosition() +
+                            " in " + getFileName(), e);
         }
     }
 }
diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaFileGeneratorUtils.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaFileGeneratorUtils.java
index c7554cb..f38c90b 100644
--- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -352,7 +352,8 @@
             throws IOException {
 
         if (file.exists()) {
-            throw new IOException(" file " + file.getName() + " is already generated." +
+            throw new IOException(" file " + file.getName() + " is already generated for "
+                    + className + " @ " + pkg + "\n" +
                                           ERROR_MSG_FOR_GEN_CODE);
         }
 
@@ -366,7 +367,7 @@
             appendContents(file, className, genType, imports, pkg);
         } catch (IOException e) {
             throw new IOException("Failed to append contents in " + file.getName() +
-                                          " class file.");
+                                          " class file.", e);
         }
     }
 
@@ -386,7 +387,8 @@
             throws IOException {
 
         if (file.exists()) {
-            throw new IOException(" file " + file.getName() + " is already generated." +
+            throw new IOException(" file " + file.getName() +
+                                  " is already generated for: " + name + "\n" +
                                           ERROR_MSG_FOR_GEN_CODE);
         }
         boolean isFileCreated;
@@ -399,7 +401,7 @@
             appendContents(file, genType, imports, curNode, name);
         } catch (IOException e) {
             throw new IOException("Failed to append contents in " + file.getName() +
-                                          " class file.");
+                                          " class file.", e);
         }
     }
 
diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java
index 7a52893..87724bc 100644
--- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -185,7 +185,7 @@
                                    false);
                 }
             } catch (IOException e) {
-                throw new IOException("failed to create package-info file");
+                throw new IOException("failed to create package-info file for " + pkg, e);
             }
         }
     }
diff --git a/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/UtilConstants.java b/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/UtilConstants.java
index 70bd660..dfc3bf0 100644
--- a/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/UtilConstants.java
+++ b/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/UtilConstants.java
@@ -1692,8 +1692,8 @@
      * Static attribute for error msg.
      */
     public static final String ERROR_MSG_FOR_GEN_CODE = "please check whether " +
-            "multiple yang" + " files has same module/submodule" +
-            " \"name\" and \"namespace\"" + "or You may have generated code of" +
+            "multiple yang files has same module/submodule" +
+            " \"name\" and \"namespace\" or You may have generated code of" +
             " previous build present in your directory.";
 
     /**
diff --git a/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/io/impl/YangIoUtils.java b/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/io/impl/YangIoUtils.java
index 2d6913f..2c88a2e 100644
--- a/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/io/impl/YangIoUtils.java
+++ b/compiler/base/utils/src/main/java/org/onosproject/yang/compiler/utils/io/impl/YangIoUtils.java
@@ -139,7 +139,7 @@
             fileWriter.close();
         } catch (IOException e) {
             throw new IOException("Exception occurred while creating package info" +
-                                          " file.");
+                                          " file.", e);
         }
     }
 
@@ -184,7 +184,7 @@
             } catch (IOException e) {
                 throw new IOException(
                         "Failed to delete the generated files in " +
-                                generatedDirectory + " directory");
+                                generatedDirectory + " directory", e);
             }
         }
     }
@@ -333,7 +333,7 @@
         try {
             FileSystemUtil.updateFileHandle(file, data, false);
         } catch (IOException e) {
-            throw new IOException("Failed to insert in " + file + "file");
+            throw new IOException("Failed to insert in " + file + "file", e);
         }
     }
 
diff --git a/model/src/test/java/org/onosproject/yang/model/ResourceIdTest.java b/model/src/test/java/org/onosproject/yang/model/ResourceIdTest.java
index cdfdb1a..f6fb475 100644
--- a/model/src/test/java/org/onosproject/yang/model/ResourceIdTest.java
+++ b/model/src/test/java/org/onosproject/yang/model/ResourceIdTest.java
@@ -22,6 +22,8 @@
 
 public class ResourceIdTest {
 
+    private static final ResourceId EMPTY =
+            ResourceId.builder().build();
     private static final ResourceId ROOT =
             ResourceId.builder().addBranchPointSchema("/", "").build();
     ResourceId ridA;
@@ -43,6 +45,7 @@
         new EqualsTester()
         .addEqualityGroup(ridA, ridAcopy)
         .addEqualityGroup(ROOT)
+        .addEqualityGroup(EMPTY)
         .testEquals();
     }
 
