diff --git a/pkg/format/formatter.go b/pkg/format/formatter.go
index af92a03..eaa42eb 100644
--- a/pkg/format/formatter.go
+++ b/pkg/format/formatter.go
@@ -71,18 +71,30 @@
 				}
 			}
 		}
-		tabWriter.Write([]byte(header))
-		tabWriter.Write([]byte("\n"))
+		if _, err = tabWriter.Write([]byte(header)); err != nil {
+			return err
+		}
+		if _, err = tabWriter.Write([]byte("\n")); err != nil {
+			return err
+		}
 
 		slice := reflect.ValueOf(data)
 		if slice.Kind() == reflect.Slice {
 			for i := 0; i < slice.Len(); i++ {
-				tmpl.Execute(tabWriter, slice.Index(i).Interface())
-				tabWriter.Write([]byte("\n"))
+				if err = tmpl.Execute(tabWriter, slice.Index(i).Interface()); err != nil {
+					return err
+				}
+				if _, err = tabWriter.Write([]byte("\n")); err != nil {
+					return err
+				}
 			}
 		} else {
-			tmpl.Execute(tabWriter, data)
-			tabWriter.Write([]byte("\n"))
+			if err = tmpl.Execute(tabWriter, data); err != nil {
+				return err
+			}
+			if _, err = tabWriter.Write([]byte("\n")); err != nil {
+				return err
+			}
 		}
 		tabWriter.Flush()
 		return nil
@@ -91,12 +103,20 @@
 	slice := reflect.ValueOf(data)
 	if slice.Kind() == reflect.Slice {
 		for i := 0; i < slice.Len(); i++ {
-			tmpl.Execute(writer, slice.Index(i).Interface())
-			writer.Write([]byte("\n"))
+			if err = tmpl.Execute(writer, slice.Index(i).Interface()); err != nil {
+				return err
+			}
+			if _, err = writer.Write([]byte("\n")); err != nil {
+				return err
+			}
 		}
 	} else {
-		tmpl.Execute(writer, data)
-		writer.Write([]byte("\n"))
+		if err = tmpl.Execute(writer, data); err != nil {
+			return err
+		}
+		if _, err = writer.Write([]byte("\n")); err != nil {
+			return err
+		}
 	}
 	return nil
 
