diff --git a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/BUILD b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/BUILD
index fe7d290..4593cb9 100644
--- a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/BUILD
+++ b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/BUILD
@@ -79,7 +79,6 @@
     srcs = ["SourceFileCoverage.java"],
     deps = [
         ":BranchCoverage",
-        ":IncompatibleMergeException",
         ":LineCoverage",
         "//third_party:auto_value",
         "//third_party:guava",
@@ -88,11 +87,6 @@
 )
 
 java_library(
-    name = "IncompatibleMergeException",
-    srcs = ["IncompatibleMergeException.java"],
-)
-
-java_library(
     name = "LcovPrinter",
     srcs = ["LcovPrinter.java"],
     deps = [
@@ -160,7 +154,6 @@
     srcs = ["Coverage.java"],
     deps = [
         ":Constants",
-        ":IncompatibleMergeException",
         ":SourceFileCoverage",
         "//third_party:guava",
     ],
@@ -185,7 +178,6 @@
         ":Coverage",
         ":GcovJsonParser",
         ":GcovParser",
-        ":IncompatibleMergeException",
         ":LcovMergerFlags",
         ":LcovParser",
         ":LcovPrinter",
diff --git a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Coverage.java b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Coverage.java
index 711b773..dfee180 100644
--- a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Coverage.java
+++ b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Coverage.java
@@ -31,7 +31,7 @@
     sourceFiles = new TreeMap<>();
   }
 
-  void add(SourceFileCoverage input) throws IncompatibleMergeException {
+  void add(SourceFileCoverage input) {
     String sourceFilename = input.sourceFileName();
     if (sourceFiles.containsKey(sourceFilename)) {
       SourceFileCoverage old = sourceFiles.get(sourceFilename);
@@ -41,11 +41,11 @@
     }
   }
 
-  static Coverage merge(Coverage... coverages) throws IncompatibleMergeException {
+  static Coverage merge(Coverage... coverages) {
     return merge(asList(coverages));
   }
 
-  static Coverage merge(List<Coverage> coverages) throws IncompatibleMergeException {
+  static Coverage merge(List<Coverage> coverages) {
     Coverage merged = new Coverage();
     for (Coverage c : coverages) {
       for (SourceFileCoverage sourceFile : c.getAllSourceFiles()) {
@@ -55,25 +55,11 @@
     return merged;
   }
 
-  static Coverage mergeUnchecked(Coverage... coverages) {
-    return mergeUnchecked(asList(coverages));
-  }
-
-  static Coverage mergeUnchecked(List<Coverage> coverages) {
-    try {
-      return merge(coverages);
-    } catch (IncompatibleMergeException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
-  static Coverage create(SourceFileCoverage... sourceFilesCoverage)
-      throws IncompatibleMergeException {
+  static Coverage create(SourceFileCoverage... sourceFilesCoverage) {
     return create(asList(sourceFilesCoverage));
   }
 
-  static Coverage create(List<SourceFileCoverage> sourceFilesCoverage)
-      throws IncompatibleMergeException {
+  static Coverage create(List<SourceFileCoverage> sourceFilesCoverage) {
     Coverage coverage = new Coverage();
     for (SourceFileCoverage sourceFileCoverage : sourceFilesCoverage) {
       coverage.add(sourceFileCoverage);
@@ -103,11 +89,7 @@
     for (SourceFileCoverage source : coverage.getAllSourceFiles()) {
       if (!isCcSourceFile(source.sourceFileName())
           || sourcesToKeep.contains(source.sourceFileName())) {
-        try {
-          finalCoverage.add(source);
-        } catch (IncompatibleMergeException e) {
-          throw new AssertionError(e);
-        }
+        finalCoverage.add(source);
       }
     }
     return finalCoverage;
@@ -150,11 +132,7 @@
     Coverage filteredCoverage = new Coverage();
     for (SourceFileCoverage source : coverage.getAllSourceFiles()) {
       if (!matchesAnyRegex(source.sourceFileName(), regexes)) {
-        try {
-          filteredCoverage.add(source);
-        } catch (IncompatibleMergeException e) {
-          throw new AssertionError(e);
-        }
+        filteredCoverage.add(source);
       }
     }
     return filteredCoverage;
diff --git a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/IncompatibleMergeException.java b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/IncompatibleMergeException.java
deleted file mode 100644
index 3a33be5..0000000
--- a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/IncompatibleMergeException.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2020 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.coverageoutputgenerator;
-
-/**
- * Exception indicating two source coverage objects cannot be merged together due to irreconcilable
- * differences.
- */
-public class IncompatibleMergeException extends Exception {
-
-  public IncompatibleMergeException(String message) {
-    super(message);
-  }
-}
diff --git a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Main.java b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Main.java
index 19194e2..53852be 100644
--- a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Main.java
+++ b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/Main.java
@@ -75,26 +75,18 @@
         flags.coverageDir() != null
             ? getCoverageFilesInDir(flags.coverageDir())
             : Collections.emptyList();
-    Coverage coverage;
-    try {
-      coverage =
-          Coverage.merge(
-              parseFiles(
-                  getTracefiles(flags, filesInCoverageDir),
-                  LcovParser::parse,
-                  flags.parseParallelism()),
-              parseFiles(
-                  getGcovInfoFiles(filesInCoverageDir),
-                  GcovParser::parse,
-                  flags.parseParallelism()),
-              parseFiles(
-                  getGcovJsonInfoFiles(filesInCoverageDir),
-                  GcovJsonParser::parse,
-                  flags.parseParallelism()));
-    } catch (IncompatibleMergeException e) {
-      logger.log(Level.SEVERE, e.getMessage());
-      return 1;
-    }
+    Coverage coverage =
+        Coverage.merge(
+            parseFiles(
+                getTracefiles(flags, filesInCoverageDir),
+                LcovParser::parse,
+                flags.parseParallelism()),
+            parseFiles(
+                getGcovInfoFiles(filesInCoverageDir), GcovParser::parse, flags.parseParallelism()),
+            parseFiles(
+                getGcovJsonInfoFiles(filesInCoverageDir),
+                GcovJsonParser::parse,
+                flags.parseParallelism()));
 
     if (flags.sourcesToReplaceFile() != null) {
       coverage.maybeReplaceSourceFileNames(getMapFromFile(flags.sourcesToReplaceFile()));
@@ -331,7 +323,7 @@
         for (SourceFileCoverage sourceFileCoverage : sourceFilesCoverage) {
           coverage.add(sourceFileCoverage);
         }
-      } catch (IOException | IncompatibleMergeException e) {
+      } catch (IOException e) {
         logger.log(
             Level.SEVERE,
             "File " + file.getAbsolutePath() + " could not be parsed due to: " + e.getMessage(),
@@ -351,7 +343,7 @@
             () ->
                 partitions.parallelStream()
                     .map((p) -> parseFilesSequentially(p, parser))
-                    .reduce((c1, c2) -> Coverage.mergeUnchecked(c1, c2))
+                    .reduce((c1, c2) -> Coverage.merge(c1, c2))
                     .orElse(Coverage.create()))
         .get();
   }
diff --git a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/SourceFileCoverage.java b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/SourceFileCoverage.java
index 0b399c1..67230c4 100644
--- a/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/SourceFileCoverage.java
+++ b/tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/SourceFileCoverage.java
@@ -153,8 +153,7 @@
    *
    * @return a new {@link SourceFileCoverage} that contains the merged coverage.
    */
-  static SourceFileCoverage merge(SourceFileCoverage source1, SourceFileCoverage source2)
-      throws IncompatibleMergeException {
+  static SourceFileCoverage merge(SourceFileCoverage source1, SourceFileCoverage source2) {
     assert source1.sourceFileName.equals(source2.sourceFileName);
     SourceFileCoverage merged = new SourceFileCoverage(source2.sourceFileName);
 
diff --git a/tools/test/CoverageOutputGenerator/javatests/com/google/devtools/coverageoutputgenerator/BUILD b/tools/test/CoverageOutputGenerator/javatests/com/google/devtools/coverageoutputgenerator/BUILD
index 52dfa79..f5f9096 100644
--- a/tools/test/CoverageOutputGenerator/javatests/com/google/devtools/coverageoutputgenerator/BUILD
+++ b/tools/test/CoverageOutputGenerator/javatests/com/google/devtools/coverageoutputgenerator/BUILD
@@ -36,7 +36,6 @@
         "//third_party:junit4",
         "//third_party:truth",
         "//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:BranchCoverage",
-        "//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:IncompatibleMergeException",
         "//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:LineCoverage",
         "//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:SourceFileCoverage",
     ],
