Remove redundant throws clauses

Change-Id: Ie2dab4edb79c655781c7c6385421c13cbdfd8fb1
diff --git a/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java b/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java
index f10cf07..dee63cc 100644
--- a/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java
+++ b/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java
@@ -60,6 +60,7 @@
    * @param archive Zip archive to provide resources from.
    * @param include Predicate deciding if a given class-file entry should be provided.
    */
+  @SuppressWarnings("RedundantThrows")
   public ArchiveClassFileProvider(Path archive, Predicate<String> include) throws IOException {
     assert isArchive(archive);
     this.archive = archive;
diff --git a/src/main/java/com/android/tools/r8/DexSegments.java b/src/main/java/com/android/tools/r8/DexSegments.java
index b009e9d..fafce61 100644
--- a/src/main/java/com/android/tools/r8/DexSegments.java
+++ b/src/main/java/com/android/tools/r8/DexSegments.java
@@ -141,7 +141,7 @@
   }
 
   public static Map<Integer, SegmentInfo> run(Command command)
-      throws CompilationFailedException, IOException, ResourceException {
+      throws IOException, ResourceException {
     if (command.isPrintHelp()) {
       System.out.println(Command.USAGE_MESSAGE);
       return null;
diff --git a/src/main/java/com/android/tools/r8/Disassemble.java b/src/main/java/com/android/tools/r8/Disassemble.java
index 8c66ba5..7126da8 100644
--- a/src/main/java/com/android/tools/r8/Disassemble.java
+++ b/src/main/java/com/android/tools/r8/Disassemble.java
@@ -241,8 +241,7 @@
     disassemble(command);
   }
 
-  public static void disassemble(DisassembleCommand command)
-      throws IOException, ExecutionException {
+  public static void disassemble(DisassembleCommand command) {
     AndroidApp app = command.getInputApp();
     InternalOptions options = command.getInternalOptions();
     try (OutputWriter outputWriter = getOutputWriter(command)) {
@@ -328,7 +327,7 @@
     }
 
     @Override
-    public void close() throws IOException {
+    public void close() {
       // Intentionally empty.
     }
   }
@@ -367,7 +366,7 @@
     }
 
     @Override
-    public void close() throws IOException {
+    public void close() {
       // Intentionally empty.
     }
   }
@@ -406,7 +405,7 @@
     }
 
     @Override
-    public void close() throws IOException {
+    public void close() {
       fileStream.flush();
       fileStream.close();
     }
diff --git a/src/main/java/com/android/tools/r8/ExtractMarker.java b/src/main/java/com/android/tools/r8/ExtractMarker.java
index 320ad14..eb5f45e 100644
--- a/src/main/java/com/android/tools/r8/ExtractMarker.java
+++ b/src/main/java/com/android/tools/r8/ExtractMarker.java
@@ -43,14 +43,13 @@
   }
 
   public static Collection<Marker> extractMarkerFromDexFile(Path file)
-      throws IOException, ExecutionException, ResourceException {
+      throws IOException, ResourceException {
     AndroidApp.Builder appBuilder = AndroidApp.builder();
     addDexResources(appBuilder, file);
     return extractMarker(appBuilder.build());
   }
 
-  public static Collection<Marker> extractMarkerFromJarFile(Path file)
-      throws IOException, ExecutionException {
+  public static Collection<Marker> extractMarkerFromJarFile(Path file) throws IOException {
     return extractMarker(AndroidApp.builder().addProgramFile(file).build());
   }
 
@@ -68,20 +67,18 @@
     return size;
   }
 
-  public static Collection<Marker> extractMarkerFromDexProgramData(byte[] data)
-      throws IOException, ExecutionException {
+  public static Collection<Marker> extractMarkerFromDexProgramData(byte[] data) throws IOException {
     AndroidApp app = AndroidApp.builder().addDexProgramData(data, Origin.unknown()).build();
     return extractMarker(app);
   }
 
   public static Collection<Marker> extractMarkerFromClassProgramData(byte[] data)
-      throws IOException, ExecutionException {
+      throws IOException {
     AndroidApp app = AndroidApp.builder().addClassProgramData(data, Origin.unknown()).build();
     return extractMarker(app);
   }
 
-  private static void addDexResources(AndroidApp.Builder appBuilder, Path file)
-      throws IOException, ResourceException {
+  private static void addDexResources(AndroidApp.Builder appBuilder, Path file) throws IOException {
     if (FileUtils.isVDexFile(file)) {
       PathOrigin vdexOrigin = new PathOrigin(file);
       try (InputStream fileInputStream = Files.newInputStream(file)) {
diff --git a/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java b/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java
index 598d8e0..a2b44dc 100644
--- a/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java
+++ b/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java
@@ -55,7 +55,7 @@
       return this;
     }
 
-    public ExtractMarkerCommand build() throws IOException {
+    public ExtractMarkerCommand build() {
       // If printing versions ignore everything else.
       if (isPrintHelp()) {
         return new ExtractMarkerCommand(isPrintHelp());
@@ -83,7 +83,7 @@
     return builder;
   }
 
-  private static void parse(String[] args, Builder builder) throws IOException {
+  private static void parse(String[] args, Builder builder) {
     for (int i = 0; i < args.length; i++) {
       String arg = args[i].trim();
       if (arg.length() == 0) {
diff --git a/src/main/java/com/android/tools/r8/JarSizeCompare.java b/src/main/java/com/android/tools/r8/JarSizeCompare.java
index 60a8e08..6f80def 100644
--- a/src/main/java/com/android/tools/r8/JarSizeCompare.java
+++ b/src/main/java/com/android/tools/r8/JarSizeCompare.java
@@ -289,7 +289,7 @@
       return applicationReader.read(map == null ? null : StringResource.fromFile(map)).toDirect();
     }
 
-    AndroidApp getInputApp(List<Path> libraries) throws Exception {
+    AndroidApp getInputApp(List<Path> libraries) {
       return AndroidApp.builder().addLibraryFiles(libraries).addProgramFiles(jar).build();
     }
   }
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index bfe119b..ebe84b2 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -468,7 +468,7 @@
     }
 
     @Override
-    public Collection<ProgramResource> getProgramResources() throws ResourceException {
+    public Collection<ProgramResource> getProgramResources() {
       return resources;
     }
 
diff --git a/src/main/java/com/android/tools/r8/PrintClassList.java b/src/main/java/com/android/tools/r8/PrintClassList.java
index 1530251..c23636c 100644
--- a/src/main/java/com/android/tools/r8/PrintClassList.java
+++ b/src/main/java/com/android/tools/r8/PrintClassList.java
@@ -24,13 +24,12 @@
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 public class PrintClassList {
 
-  public static void main(String[] args) throws IOException, ExecutionException {
+  public static void main(String[] args) throws IOException {
     List<String> dexFiles = Arrays.asList(args);
     Builder builder = AndroidApp.builder();
     Path proguardMapFile = null;
diff --git a/src/main/java/com/android/tools/r8/ProgramResource.java b/src/main/java/com/android/tools/r8/ProgramResource.java
index 41a9e1a..671c2c3 100644
--- a/src/main/java/com/android/tools/r8/ProgramResource.java
+++ b/src/main/java/com/android/tools/r8/ProgramResource.java
@@ -152,11 +152,13 @@
       return kind;
     }
 
+    @SuppressWarnings("RedundantThrows")
     @Override
     public InputStream getByteStream() throws ResourceException {
       return new ByteArrayInputStream(bytes);
     }
 
+    @SuppressWarnings("RedundantThrows")
     @Override
     public byte[] getBytes() throws ResourceException {
       return bytes;
diff --git a/src/main/java/com/android/tools/r8/ProgramResourceProvider.java b/src/main/java/com/android/tools/r8/ProgramResourceProvider.java
index dd2bea8..b0620b1 100644
--- a/src/main/java/com/android/tools/r8/ProgramResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/ProgramResourceProvider.java
@@ -26,6 +26,7 @@
    *
    * <p>Providers should make sure finished can be safely called multiple times.
    */
+  @SuppressWarnings("RedundantThrows")
   default void finished(DiagnosticsHandler handler) throws IOException {
     // Do nothing by default.
   }
diff --git a/src/main/java/com/android/tools/r8/ResourceShrinker.java b/src/main/java/com/android/tools/r8/ResourceShrinker.java
index b5ab2b6..ee1dd76 100644
--- a/src/main/java/com/android/tools/r8/ResourceShrinker.java
+++ b/src/main/java/com/android/tools/r8/ResourceShrinker.java
@@ -473,6 +473,7 @@
     }
   }
 
+  @SuppressWarnings("RedundantThrows")
   public static void run(Command command, ReferenceChecker callback)
       throws IOException, ExecutionException {
     AndroidApp inputApp = command.getInputApp();
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java b/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
index 6087898..0a81bd2 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
@@ -95,8 +95,7 @@
       ExecutorService executorService,
       List<VirtualFile> virtualFiles,
       List<DexString> forcedStrings,
-      Timing timing)
-      throws ExecutionException {
+      Timing timing) {
     TimingMerger merger =
         timing.beginMerger("Write files", ThreadUtils.getNumberOfThreads(executorService));
     Collection<Timing> timings;
diff --git a/src/main/java/com/android/tools/r8/dex/VirtualFile.java b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
index 436f365..1b625f6 100644
--- a/src/main/java/com/android/tools/r8/dex/VirtualFile.java
+++ b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
@@ -46,7 +46,6 @@
 import com.google.common.collect.Sets;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -60,7 +59,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Function;
 import java.util.function.Predicate;
@@ -302,8 +300,7 @@
       this.writer = writer;
     }
 
-    public abstract List<VirtualFile> run() throws ExecutionException, IOException;
-
+    public abstract List<VirtualFile> run();
   }
 
   /**
@@ -495,7 +492,7 @@
     }
 
     @Override
-    public List<VirtualFile> run() throws IOException {
+    public List<VirtualFile> run() {
       assert virtualFiles.size() == 1;
       assert virtualFiles.get(0).isEmpty();
 
@@ -555,7 +552,7 @@
     }
 
     @Override
-    public List<VirtualFile> run() throws ExecutionException, IOException {
+    public List<VirtualFile> run() {
       Map<FeatureSplit, Set<DexProgramClass>> featureSplitClasses =
           removeFeatureSplitClassesGetMapping();
       // Add all classes to the main dex file.
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringCollection.java b/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringCollection.java
index 5460c34..b40016f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringCollection.java
@@ -90,8 +90,7 @@
 
     @Override
     public void synthesizeClasses(
-        ExecutorService executorService, CfClassSynthesizerDesugaringEventConsumer eventConsumer)
-        throws ExecutionException {
+        ExecutorService executorService, CfClassSynthesizerDesugaringEventConsumer eventConsumer) {
       // Intentionally empty.
     }
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java b/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
index e3f1f89..a0db01b 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
@@ -115,8 +115,7 @@
     public void postProcessingDesugaring(
         Collection<DexProgramClass> programClasses,
         CfPostProcessingDesugaringEventConsumer eventConsumer,
-        ExecutorService executorService)
-        throws ExecutionException {
+        ExecutorService executorService) {
       // Intentionally empty.
     }
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerPostProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerPostProcessor.java
index 2e26d1e..8d9be0f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerPostProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerPostProcessor.java
@@ -15,7 +15,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 
 public class DesugaredLibraryDisableDesugarerPostProcessor implements CfPostProcessingDesugaring {
@@ -38,8 +37,7 @@
   public void postProcessingDesugaring(
       Collection<DexProgramClass> programClasses,
       CfPostProcessingDesugaringEventConsumer eventConsumer,
-      ExecutorService executorService)
-      throws ExecutionException {
+      ExecutorService executorService) {
     for (DexType multiDexType : appView.dexItemFactory().multiDexTypes) {
       DexClass clazz =
           appView.appInfoForDesugaring().definitionForWithoutExistenceAssert(multiDexType);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java
index dc24bff..c357c2a 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java
@@ -16,7 +16,6 @@
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.SemanticVersion;
 import com.android.tools.r8.utils.Timing;
-import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -239,7 +238,7 @@
 
   @Override
   public MachineDesugaredLibrarySpecification toMachineSpecification(
-      DexApplication app, Timing timing) throws IOException {
+      DexApplication app, Timing timing) {
     LibraryValidator.validate(app, libraryCompilation, getRequiredCompilationApiLevel());
     return this;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/retargeter/DesugaredLibraryRetargeterPostProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/retargeter/DesugaredLibraryRetargeterPostProcessor.java
index dcf5c0a..98b707f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/retargeter/DesugaredLibraryRetargeterPostProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/retargeter/DesugaredLibraryRetargeterPostProcessor.java
@@ -25,7 +25,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 
 // The rewrite of virtual calls requires to go through emulate dispatch. This class is responsible
@@ -48,8 +47,7 @@
   public void postProcessingDesugaring(
       Collection<DexProgramClass> programClasses,
       CfPostProcessingDesugaringEventConsumer eventConsumer,
-      ExecutorService executorService)
-      throws ExecutionException {
+      ExecutorService executorService) {
     assert !appView.options().isDesugaredLibraryCompilation();
     ensureInterfacesAndForwardingMethodsSynthesized(programClasses, eventConsumer);
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java
index 48f3aaa..c5c7348 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java
@@ -28,7 +28,6 @@
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.Timing;
 import com.google.common.collect.Sets;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -47,8 +46,7 @@
   }
 
   public MultiAPILevelMachineDesugaredLibrarySpecification convertAllAPILevels(
-      MultiAPILevelHumanDesugaredLibrarySpecification humanSpec, DexApplication app)
-      throws IOException {
+      MultiAPILevelHumanDesugaredLibrarySpecification humanSpec, DexApplication app) {
     timing.begin("Legacy to human all API convert");
     reporter = app.options.reporter;
     appInfo =
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/LegacyToHumanSpecificationConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/LegacyToHumanSpecificationConverter.java
index 1f7fe89..277285e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/LegacyToHumanSpecificationConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/LegacyToHumanSpecificationConverter.java
@@ -33,7 +33,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -54,8 +53,7 @@
   }
 
   public MultiAPILevelHumanDesugaredLibrarySpecification convertAllAPILevels(
-      MultiAPILevelLegacyDesugaredLibrarySpecification legacySpec, DexApplication app)
-      throws IOException {
+      MultiAPILevelLegacyDesugaredLibrarySpecification legacySpec, DexApplication app) {
     timing.begin("Legacy to human all API convert");
     Origin origin = legacySpec.getOrigin();
 
@@ -80,7 +78,7 @@
   }
 
   public HumanDesugaredLibrarySpecification convert(
-      LegacyDesugaredLibrarySpecification legacySpec, DexApplication app) throws IOException {
+      LegacyDesugaredLibrarySpecification legacySpec, DexApplication app) {
     timing.begin("Legacy to Human convert");
     LibraryValidator.validate(
         app,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/outliner/Outliner.java b/src/main/java/com/android/tools/r8/ir/optimize/outliner/Outliner.java
index f8d0177..472f1b1 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/outliner/Outliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/outliner/Outliner.java
@@ -48,8 +48,7 @@
           IRConverter converter,
           OptimizationFeedbackDelayed feedback,
           ExecutorService executorService,
-          Timing timing)
-          throws ExecutionException {
+          Timing timing) {
         // Intentionally empty.
       }
 
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
index ee7b46e..687767b 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.naming.mappinginformation;
 
 import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.MappingComposeException;
 import com.android.tools.r8.naming.mappinginformation.MappingInformation.ReferentialMappingInformation;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
@@ -44,7 +43,7 @@
   }
 
   @Override
-  public MappingInformation compose(MappingInformation existing) throws MappingComposeException {
+  public MappingInformation compose(MappingInformation existing) {
     // There is no difference between taking the existing or new so we just do a consistent choice.
     return existing;
   }
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java
index 7535bd3..885d0af 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java
@@ -6,7 +6,6 @@
 
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.MappingComposeException;
 import com.android.tools.r8.naming.mappinginformation.MappingInformation.ReferentialMappingInformation;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -44,7 +43,7 @@
   }
 
   @Override
-  public MappingInformation compose(MappingInformation existing) throws MappingComposeException {
+  public MappingInformation compose(MappingInformation existing) {
     // Always take the first mapping.
     return existing;
   }
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/MapVersionMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/MapVersionMappingInformation.java
index f061912..f3cac35 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/MapVersionMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/MapVersionMappingInformation.java
@@ -7,7 +7,6 @@
 import static com.android.tools.r8.naming.mappinginformation.MappingInformationDiagnostics.noKeyForObjectWithId;
 
 import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.MappingComposeException;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
 import java.util.function.Consumer;
@@ -41,7 +40,7 @@
   }
 
   @Override
-  public MappingInformation compose(MappingInformation existing) throws MappingComposeException {
+  public MappingInformation compose(MappingInformation existing) {
     assert existing.isMapVersionMappingInformation();
     MapVersionMappingInformation existingMapVersionInfo = existing.asMapVersionMappingInformation();
     return mapVersion.isLessThanOrEqualTo(existingMapVersionInfo.getMapVersion()) ? existing : this;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/OutlineMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/OutlineMappingInformation.java
index 72b3b8f..a8ee0fd 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/OutlineMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/OutlineMappingInformation.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.naming.mappinginformation;
 
 import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.MappingComposeException;
 import com.android.tools.r8.naming.mappinginformation.MappingInformation.ReferentialMappingInformation;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
@@ -34,7 +33,7 @@
   }
 
   @Override
-  public MappingInformation compose(MappingInformation existing) throws MappingComposeException {
+  public MappingInformation compose(MappingInformation existing) {
     // It does not matter which one we take so just take the first one.
     return existing;
   }
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/ResidualSignatureMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/ResidualSignatureMappingInformation.java
index 06fc0f2..5d7fd1b 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/ResidualSignatureMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/ResidualSignatureMappingInformation.java
@@ -9,7 +9,6 @@
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.MappingComposeException;
 import com.android.tools.r8.naming.mappinginformation.MappingInformation.ReferentialMappingInformation;
 import com.android.tools.r8.utils.ArrayUtils;
 import com.android.tools.r8.utils.DescriptorUtils;
@@ -142,7 +141,7 @@
     }
 
     @Override
-    public MappingInformation compose(MappingInformation existing) throws MappingComposeException {
+    public MappingInformation compose(MappingInformation existing) {
       // Always take the newest residual mapping
       assert existing.isResidualMethodSignatureMappingInformation();
       return this;
@@ -207,7 +206,7 @@
     }
 
     @Override
-    public MappingInformation compose(MappingInformation existing) throws MappingComposeException {
+    public MappingInformation compose(MappingInformation existing) {
       // Always take the newest residual mapping.
       assert existing.isResidualFieldSignatureMappingInformation();
       return this;
diff --git a/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java b/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
index f2b6783..6e73c56 100644
--- a/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
+++ b/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
@@ -25,6 +25,7 @@
     return false;
   }
 
+  @SuppressWarnings("RedundantThrows")
   default Path getPath() throws FileNotFoundException {
     return null;
   }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceBytes.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceBytes.java
index 3f379a4..f4c2d41 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceBytes.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceBytes.java
@@ -25,7 +25,7 @@
   }
 
   @Override
-  public String get() throws IOException {
+  public String get() {
     return new String(bytes, StandardCharsets.UTF_8);
   }
 
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java
index 00f905e..3902e28 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java
@@ -17,7 +17,6 @@
 import com.android.tools.r8.ProgramResource;
 import com.android.tools.r8.ProgramResource.Kind;
 import com.android.tools.r8.ProgramResourceProvider;
-import com.android.tools.r8.ResourceException;
 import com.android.tools.r8.dex.Marker.Tool;
 import com.android.tools.r8.dump.DumpOptions;
 import com.android.tools.r8.origin.Origin;
@@ -283,7 +282,7 @@
               ProgramResource dexResource = ProgramResource.fromFile(Kind.DEX, file);
 
               @Override
-              public Collection<ProgramResource> getProgramResources() throws ResourceException {
+              public Collection<ProgramResource> getProgramResources() {
                 return Collections.singletonList(dexResource);
               }
             });
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index 50ea5cf..0b9de96 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -978,7 +978,7 @@
         addProgramResourceProvider(
             new ProgramResourceProvider() {
               @Override
-              public Collection<ProgramResource> getProgramResources() throws ResourceException {
+              public Collection<ProgramResource> getProgramResources() {
                 return programResources;
               }
 
@@ -988,7 +988,7 @@
                     ? null
                     : new DataResourceProvider() {
                       @Override
-                      public void accept(Visitor visitor) throws ResourceException {
+                      public void accept(Visitor visitor) {
                         for (DataEntryResource dataResource : dataResources) {
                           visitor.visit(dataResource);
                         }
diff --git a/src/main/java/com/android/tools/r8/utils/OneShotByteResource.java b/src/main/java/com/android/tools/r8/utils/OneShotByteResource.java
index 070e9df..494d500 100644
--- a/src/main/java/com/android/tools/r8/utils/OneShotByteResource.java
+++ b/src/main/java/com/android/tools/r8/utils/OneShotByteResource.java
@@ -47,7 +47,7 @@
   }
 
   @Override
-  public byte[] getBytes() throws ResourceException {
+  public byte[] getBytes() {
     assert bytes != null;
     byte[] result = bytes;
     bytes = null;
diff --git a/src/test/java/com/android/tools/r8/AndroidAppDumpsTest.java b/src/test/java/com/android/tools/r8/AndroidAppDumpsTest.java
index 88e998c..3068537 100644
--- a/src/test/java/com/android/tools/r8/AndroidAppDumpsTest.java
+++ b/src/test/java/com/android/tools/r8/AndroidAppDumpsTest.java
@@ -114,7 +114,7 @@
       String name, byte[] content, Origin origin) {
     return new ProgramResourceProvider() {
       @Override
-      public Collection<ProgramResource> getProgramResources() throws ResourceException {
+      public Collection<ProgramResource> getProgramResources() {
         return Collections.emptyList();
       }
 
@@ -122,11 +122,11 @@
       public DataResourceProvider getDataResourceProvider() {
         return new DataResourceProvider() {
           @Override
-          public void accept(Visitor visitor) throws ResourceException {
+          public void accept(Visitor visitor) {
             visitor.visit(
                 new DataEntryResource() {
                   @Override
-                  public InputStream getByteStream() throws ResourceException {
+                  public InputStream getByteStream() {
                     return new ByteArrayInputStream(content);
                   }
 
diff --git a/src/test/java/com/android/tools/r8/AsmTestBase.java b/src/test/java/com/android/tools/r8/AsmTestBase.java
index 480f7b4..9c6870a 100644
--- a/src/test/java/com/android/tools/r8/AsmTestBase.java
+++ b/src/test/java/com/android/tools/r8/AsmTestBase.java
@@ -140,8 +140,8 @@
     ensureSameOutput(main, mergedApp, false, classes);
   }
 
-  protected static AndroidApp readClassesAndAsmDump(List<Class<?>> classes, List<byte[]> asmClasses)
-      throws IOException {
+  protected static AndroidApp readClassesAndAsmDump(
+      List<Class<?>> classes, List<byte[]> asmClasses) {
     AndroidApp.Builder builder = AndroidApp.builder();
     for (Class clazz : classes) {
       builder.addProgramFiles(ToolHelper.getClassFileForTestClass(clazz));
diff --git a/src/test/java/com/android/tools/r8/CommandTestBase.java b/src/test/java/com/android/tools/r8/CommandTestBase.java
index 8fcdb4c..6c72b39 100644
--- a/src/test/java/com/android/tools/r8/CommandTestBase.java
+++ b/src/test/java/com/android/tools/r8/CommandTestBase.java
@@ -24,7 +24,7 @@
 import org.junit.Test;
 
 public abstract class CommandTestBase<C extends BaseCompilerCommand> extends TestBase {
-  private void mapDiagnosticsMissingArguments(String... args) throws Exception {
+  private void mapDiagnosticsMissingArguments(String... args) {
     try {
       DiagnosticsChecker.checkErrorsContains(
           "Missing argument(s) for --map-diagnostics", handler -> parse(handler, args));
@@ -43,7 +43,7 @@
     mapDiagnosticsMissingArguments("--map-diagnostics", "xxx");
   }
 
-  private void mapDiagnosticsInvalidArguments(String... args) throws Exception {
+  private void mapDiagnosticsInvalidArguments(String... args) {
     try {
       DiagnosticsChecker.checkErrorsContains(
           "Invalid diagnostics level 'xxx'", handler -> parse(handler, args));
@@ -66,7 +66,7 @@
   }
 
   @Test
-  public void mapDiagnosticsInvalidArgumentsMoreErrors() throws Exception {
+  public void mapDiagnosticsInvalidArgumentsMoreErrors() {
     try {
       DiagnosticsChecker.checkErrorsContains(
           ImmutableList.of("Invalid diagnostics level 'xxx'", "Unknown option: --xxx"),
@@ -180,7 +180,7 @@
   }
 
   @Test
-  public void warningsToError() throws Exception {
+  public void warningsToError() {
     try {
       DiagnosticsChecker.checkErrorsContains(
           "Warning",
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index a90db2a..1c9db48 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -755,7 +755,7 @@
     assertEquals(10, parse("--thread-count", "10").getThreadCount());
   }
 
-  private void numThreadsOptionInvalid(String value) throws Exception {
+  private void numThreadsOptionInvalid(String value) {
     final String expectedErrorContains = "Invalid argument to --thread-count";
     try {
       DiagnosticsChecker.checkErrorsContains(
diff --git a/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java
index 4e81a0e..bb2fef7 100644
--- a/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java
@@ -231,8 +231,7 @@
       }
     }
 
-    abstract void addClasspathReference(
-        Path testJarFile, D8Command.Builder builder) throws IOException;
+    abstract void addClasspathReference(Path testJarFile, D8Command.Builder builder);
 
     abstract void addLibraryReference(Builder builder, Path location) throws IOException;
   }
@@ -375,8 +374,7 @@
 
   @Override
   protected void testIntermediateWithMainDexList(
-      String packageName, Path input, int expectedMainDexListSize, List<String> mainDexClasses)
-      throws Throwable {
+      String packageName, Path input, int expectedMainDexListSize, List<String> mainDexClasses) {
     // Skip those tests.
     Assume.assumeTrue(false);
   }
@@ -387,8 +385,7 @@
       Path input,
       OutputMode outputMode,
       AndroidApiLevel minApi,
-      List<String> mainDexClasses)
-      throws Throwable {
+      List<String> mainDexClasses) {
     // tests using this should already been skipped.
     throw new Unreachable();
   }
diff --git a/src/test/java/com/android/tools/r8/D8NonLazyRunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/D8NonLazyRunExamplesAndroidOTest.java
index e16ecd1..c87ad97 100644
--- a/src/test/java/com/android/tools/r8/D8NonLazyRunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/D8NonLazyRunExamplesAndroidOTest.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8;
 
-import java.io.IOException;
 import java.nio.file.Path;
 
 public class D8NonLazyRunExamplesAndroidOTest
@@ -16,12 +15,12 @@
     }
 
     @Override
-    void addClasspathReference(Path testJarFile, D8Command.Builder builder) throws IOException {
+    void addClasspathReference(Path testJarFile, D8Command.Builder builder) {
       builder.addClasspathFiles(testJarFile);
     }
 
     @Override
-    void addLibraryReference(D8Command.Builder builder, Path location) throws IOException {
+    void addLibraryReference(D8Command.Builder builder, Path location) {
       builder.addLibraryFiles(ToolHelper.getAndroidJar(
           androidJarVersion == null ? builder.getMinApiLevel() : androidJarVersion.getLevel()));
     }
diff --git a/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java b/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java
index 1a9bfbd..b2f00fd 100644
--- a/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java
+++ b/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java
@@ -11,7 +11,6 @@
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import java.io.IOException;
 import java.nio.file.Path;
-import java.util.concurrent.ExecutionException;
 
 public class ExternalR8TestRunResult extends SingleTestRunResult<ExternalR8TestRunResult> {
 
@@ -40,7 +39,7 @@
   }
 
   @Override
-  public CodeInspector inspector() throws IOException, ExecutionException {
+  public CodeInspector inspector() throws IOException {
     // See comment in base class.
     assertSuccess();
     assertNotNull(app);
diff --git a/src/test/java/com/android/tools/r8/GenerateMainDexListTestBuilder.java b/src/test/java/com/android/tools/r8/GenerateMainDexListTestBuilder.java
index be16aaa..bb20cb9 100644
--- a/src/test/java/com/android/tools/r8/GenerateMainDexListTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/GenerateMainDexListTestBuilder.java
@@ -7,7 +7,6 @@
 import com.android.tools.r8.errors.Unimplemented;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.InternalOptions;
-import java.io.IOException;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,14 +41,12 @@
   }
 
   @Override
-  public GenerateMainDexListRunResult run(String mainClass)
-      throws IOException, CompilationFailedException {
+  public GenerateMainDexListRunResult run(String mainClass) {
     throw new Unimplemented("No support for running with a main class");
   }
 
   @Override
-  public GenerateMainDexListRunResult run(TestRuntime runtime, String mainClass, String... args)
-      throws IOException, CompilationFailedException {
+  public GenerateMainDexListRunResult run(TestRuntime runtime, String mainClass, String... args) {
     throw new Unimplemented("No support for running with a main class");
   }
 
@@ -68,7 +65,7 @@
     throw new Unimplemented("No support for class path");
   }
 
-  public GenerateMainDexListRunResult run() throws CompilationFailedException, IOException {
+  public GenerateMainDexListRunResult run() throws CompilationFailedException {
     GenerateMainDexListCommand command = builder.build();
     InternalOptions internalOptions = command.getInternalOptions();
     optionsConsumer.accept(internalOptions);
diff --git a/src/test/java/com/android/tools/r8/JacocoRegressionTest.java b/src/test/java/com/android/tools/r8/JacocoRegressionTest.java
index 235b7c6..a7421e8 100644
--- a/src/test/java/com/android/tools/r8/JacocoRegressionTest.java
+++ b/src/test/java/com/android/tools/r8/JacocoRegressionTest.java
@@ -48,7 +48,7 @@
     assertTrue(result1.toString().contains("java.lang.VerifyError: Bad local variable type"));
   }
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     FieldVisitor fieldVisitor;
diff --git a/src/test/java/com/android/tools/r8/L8CommandTest.java b/src/test/java/com/android/tools/r8/L8CommandTest.java
index 3526d0c..a2c7122 100644
--- a/src/test/java/com/android/tools/r8/L8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/L8CommandTest.java
@@ -529,7 +529,7 @@
             .getThreadCount());
   }
 
-  private void numThreadsOptionInvalid(String value) throws Exception {
+  private void numThreadsOptionInvalid(String value) {
     final String expectedErrorContains = "Invalid argument to --thread-count";
     try {
       DiagnosticsChecker.checkErrorsContains(
diff --git a/src/test/java/com/android/tools/r8/L8TestBuilder.java b/src/test/java/com/android/tools/r8/L8TestBuilder.java
index 190e87b..e064ba5 100644
--- a/src/test/java/com/android/tools/r8/L8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/L8TestBuilder.java
@@ -30,7 +30,6 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -99,7 +98,7 @@
     return this;
   }
 
-  public L8TestBuilder addKeepRules(String keepRule) throws IOException {
+  public L8TestBuilder addKeepRules(String keepRule) {
     this.keepRules.add(keepRule);
     return this;
   }
@@ -170,8 +169,7 @@
         : sink.wrapProgramConsumer(DexIndexedConsumer.emptyConsumer());
   }
 
-  public L8TestCompileResult compile()
-      throws IOException, CompilationFailedException, ExecutionException {
+  public L8TestCompileResult compile() throws IOException, CompilationFailedException {
     // We wrap exceptions in a RuntimeException to call this from a lambda.
     AndroidAppConsumers sink = new AndroidAppConsumers();
     l8Builder
diff --git a/src/test/java/com/android/tools/r8/L8TestRunResult.java b/src/test/java/com/android/tools/r8/L8TestRunResult.java
index 8f6bab8..5737db4 100644
--- a/src/test/java/com/android/tools/r8/L8TestRunResult.java
+++ b/src/test/java/com/android/tools/r8/L8TestRunResult.java
@@ -7,8 +7,6 @@
 import com.android.tools.r8.errors.Unimplemented;
 import com.android.tools.r8.utils.ThrowingConsumer;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import java.io.IOException;
-import java.util.concurrent.ExecutionException;
 import org.hamcrest.Matcher;
 
 public class L8TestRunResult extends TestRunResult<L8TestRunResult> {
@@ -44,7 +42,7 @@
 
   @Override
   public <E extends Throwable> L8TestRunResult inspect(ThrowingConsumer<CodeInspector, E> consumer)
-      throws IOException, ExecutionException, E {
+      throws E {
     throw new Unimplemented();
   }
 
@@ -55,7 +53,7 @@
   }
 
   @Override
-  public L8TestRunResult disassemble() throws IOException, ExecutionException {
+  public L8TestRunResult disassemble() {
     throw new Unimplemented();
   }
 }
diff --git a/src/test/java/com/android/tools/r8/OrderedClassFileResourceProviderTest.java b/src/test/java/com/android/tools/r8/OrderedClassFileResourceProviderTest.java
index 5256efd..896762d 100644
--- a/src/test/java/com/android/tools/r8/OrderedClassFileResourceProviderTest.java
+++ b/src/test/java/com/android/tools/r8/OrderedClassFileResourceProviderTest.java
@@ -51,12 +51,12 @@
     }
 
     @Override
-    public InputStream getByteStream() throws ResourceException {
+    public InputStream getByteStream() {
       return null;
     }
 
     @Override
-    public byte[] getBytes() throws ResourceException {
+    public byte[] getBytes() {
       return null;
     }
 
diff --git a/src/test/java/com/android/tools/r8/R8CommandTest.java b/src/test/java/com/android/tools/r8/R8CommandTest.java
index ac12923..57fda02 100644
--- a/src/test/java/com/android/tools/r8/R8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/R8CommandTest.java
@@ -463,21 +463,25 @@
   @Test(expected = CompilationFailedException.class)
   public void dexProviderUnsupported() throws Throwable {
     Path dexFile = temp.newFile("test.dex").toPath();
-    DiagnosticsChecker.checkErrorsContains("DEX input", handler ->
-        R8.run(R8Command
-            .builder(handler)
-            .setProgramConsumer(DexIndexedConsumer.emptyConsumer())
-            .addProgramResourceProvider(new ProgramResourceProvider() {
-              @Override
-              public Collection<ProgramResource> getProgramResources() throws ResourceException {
-                return Collections.singleton(ProgramResource.fromFile(Kind.DEX, dexFile));
-              }
-            })
-            .build()));
+    DiagnosticsChecker.checkErrorsContains(
+        "DEX input",
+        handler ->
+            R8.run(
+                R8Command.builder(handler)
+                    .setProgramConsumer(DexIndexedConsumer.emptyConsumer())
+                    .addProgramResourceProvider(
+                        new ProgramResourceProvider() {
+                          @Override
+                          public Collection<ProgramResource> getProgramResources() {
+                            return Collections.singleton(
+                                ProgramResource.fromFile(Kind.DEX, dexFile));
+                          }
+                        })
+                    .build()));
   }
 
   @Test
-  public void dexDataUnsupported() throws Throwable {
+  public void dexDataUnsupported() {
     for (Method method : R8Command.Builder.class.getMethods()) {
       assertNotEquals("addDexProgramData", method.getName());
     }
@@ -884,7 +888,7 @@
     assertEquals(10, parse("--thread-count", "10").getThreadCount());
   }
 
-  private void numThreadsOptionInvalid(String value) throws Exception {
+  private void numThreadsOptionInvalid(String value) {
     final String expectedErrorContains = "Invalid argument to --thread-count";
     try {
       DiagnosticsChecker.checkErrorsContains(
diff --git a/src/test/java/com/android/tools/r8/R8EntryPointTests.java b/src/test/java/com/android/tools/r8/R8EntryPointTests.java
index 0bbc7bc..c0b143c 100644
--- a/src/test/java/com/android/tools/r8/R8EntryPointTests.java
+++ b/src/test/java/com/android/tools/r8/R8EntryPointTests.java
@@ -194,7 +194,7 @@
         r8.stderr, containsString("Cannot compile in both --dex and --classfile output mode"));
   }
 
-  private R8Command getCommand(Path out) throws IOException, CompilationFailedException {
+  private R8Command getCommand(Path out) throws CompilationFailedException {
     return R8Command.builder()
         .addLibraryFiles(ToolHelper.getDefaultAndroidJar())
         .addProgramFiles(INPUT_JAR)
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 367a7c8..da660e7 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -47,7 +47,6 @@
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.function.Consumer;
 import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
@@ -1679,8 +1678,7 @@
                   .addProgramResourceProvider(
                       new ProgramResourceProvider() {
                         @Override
-                        public Collection<ProgramResource> getProgramResources()
-                            throws ResourceException {
+                        public Collection<ProgramResource> getProgramResources() {
                           return cfInputs;
                         }
                       });
@@ -2062,8 +2060,7 @@
     expectedException = true;
   }
 
-  private void failWithDexDiff(File originalFile, File processedFile)
-      throws IOException, ExecutionException {
+  private void failWithDexDiff(File originalFile, File processedFile) throws IOException {
     CodeInspector inspectOriginal =
         new CodeInspector(originalFile.toPath().toAbsolutePath());
     CodeInspector inspectProcessed =
diff --git a/src/test/java/com/android/tools/r8/R8TestBuilder.java b/src/test/java/com/android/tools/r8/R8TestBuilder.java
index 33c870e..55e0435 100644
--- a/src/test/java/com/android/tools/r8/R8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/R8TestBuilder.java
@@ -717,7 +717,7 @@
     return self();
   }
 
-  public T enableExperimentalKeepAnnotations() throws IOException {
+  public T enableExperimentalKeepAnnotations() {
     builder.addClasspathResourceProvider(
         DirectoryClassFileProvider.fromDirectory(KeepEdgeAnnotationsTest.KEEP_ANNO_PATH));
     builder.setEnableExperimentalKeepAnnotations(true);
diff --git a/src/test/java/com/android/tools/r8/R8TestRunResult.java b/src/test/java/com/android/tools/r8/R8TestRunResult.java
index 8734544..510bc03 100644
--- a/src/test/java/com/android/tools/r8/R8TestRunResult.java
+++ b/src/test/java/com/android/tools/r8/R8TestRunResult.java
@@ -19,7 +19,7 @@
 public class R8TestRunResult extends SingleTestRunResult<R8TestRunResult> {
 
   public interface GraphInspectorSupplier {
-    GraphInspector get() throws IOException, ExecutionException;
+    GraphInspector get() throws IOException;
   }
 
   private final String proguardMap;
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
index 51bb753..de13777 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
@@ -412,7 +412,7 @@
   }
 
   @Test
-  public void repeatAnnotationsNewApi() throws Throwable {
+  public void repeatAnnotationsNewApi() {
     // No need to specify minSdk as repeat annotations are handled by javac and we do not have
     // to do anything to support them. The library methods to access them just have to be in
     // the system.
@@ -615,8 +615,7 @@
   abstract RunExamplesAndroidOTest<B>.TestRunner<?> test(String testName, String packageName,
       String mainClass);
 
-  void execute(String testName,
-      String qualifiedMainClass, Path[] jars, Path[] dexes) throws IOException {
+  void execute(String testName, String qualifiedMainClass, Path[] jars, Path[] dexes) {
     execute(testName, qualifiedMainClass, jars, dexes, Collections.emptyList());
   }
 
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
index 55a5dea..6c1a1de 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
@@ -33,7 +33,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ExecutionException;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.function.UnaryOperator;
@@ -253,8 +252,7 @@
     }
   }
 
-  protected CodeInspector getMainDexInspector(Path zip)
-      throws ZipException, IOException, ExecutionException {
+  protected CodeInspector getMainDexInspector(Path zip) throws ZipException, IOException {
     try (ZipFile zipFile = new ZipFile(zip.toFile(), StandardCharsets.UTF_8)) {
       try (InputStream in =
           zipFile.getInputStream(zipFile.getEntry(ToolHelper.DEFAULT_DEX_FILENAME))) {
diff --git a/src/test/java/com/android/tools/r8/SingleTestRunResult.java b/src/test/java/com/android/tools/r8/SingleTestRunResult.java
index 422f776..7ee3103 100644
--- a/src/test/java/com/android/tools/r8/SingleTestRunResult.java
+++ b/src/test/java/com/android/tools/r8/SingleTestRunResult.java
@@ -113,7 +113,7 @@
     return new CodeInspector(app);
   }
 
-  public CodeInspector inspector() throws IOException, ExecutionException {
+  public CodeInspector inspector() throws IOException {
     // Inspection post run implies success. If inspection of an invalid program is needed it should
     // be done on the compilation result or on the input.
     assertSuccess();
@@ -149,7 +149,7 @@
     return self();
   }
 
-  public RR disassemble(PrintStream ps) throws IOException, ExecutionException {
+  public RR disassemble(PrintStream ps) throws IOException {
     ToolHelper.disassemble(app, ps);
     return self();
   }
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index 89d5749..9fa6825 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -656,7 +656,7 @@
   }
 
   protected static AndroidApp readClassesAndRuntimeJar(
-      List<Class<?>> programClasses, Backend backend) throws IOException {
+      List<Class<?>> programClasses, Backend backend) {
     AndroidApp.Builder builder = AndroidApp.builder();
     for (Class<?> clazz : programClasses) {
       builder.addProgramFiles(ToolHelper.getClassFileForTestClass(clazz));
@@ -672,7 +672,7 @@
   }
 
   /** Build an AndroidApp from the specified program files. */
-  protected AndroidApp readProgramFiles(Path... programFiles) throws IOException {
+  protected AndroidApp readProgramFiles(Path... programFiles) {
     return AndroidApp.builder().addProgramFiles(programFiles).build();
   }
 
@@ -1074,7 +1074,7 @@
 
   /** Compile an application with R8. */
   protected AndroidApp compileWithR8(AndroidApp app, Consumer<InternalOptions> optionsConsumer)
-      throws IOException, CompilationFailedException {
+      throws CompilationFailedException {
     R8Command command = ToolHelper.prepareR8CommandBuilder(app)
         .setDisableTreeShaking(true)
         .setDisableMinification(true)
@@ -1105,7 +1105,7 @@
 
   /** Compile an application with R8 using the supplied proguard configuration. */
   protected AndroidApp compileWithR8(AndroidApp app, Path proguardConfig)
-      throws IOException, CompilationFailedException {
+      throws CompilationFailedException {
     R8Command command =
         ToolHelper.prepareR8CommandBuilder(app)
             .addProguardConfigurationFiles(proguardConfig)
@@ -1115,20 +1115,20 @@
 
   /** Compile an application with R8 using the supplied proguard configuration. */
   protected AndroidApp compileWithR8(AndroidApp app, String proguardConfig)
-      throws IOException, CompilationFailedException {
+      throws CompilationFailedException {
     return compileWithR8(app, proguardConfig, null, Backend.DEX);
   }
 
   /** Compile an application with R8 using the supplied proguard configuration. */
   protected AndroidApp compileWithR8(AndroidApp app, String proguardConfig, Backend backend)
-      throws IOException, CompilationFailedException {
+      throws CompilationFailedException {
     return compileWithR8(app, proguardConfig, null, backend);
   }
 
   /** Compile an application with R8 using the supplied proguard configuration. */
   protected AndroidApp compileWithR8(
       AndroidApp app, String proguardConfig, Consumer<InternalOptions> optionsConsumer)
-      throws IOException, CompilationFailedException {
+      throws CompilationFailedException {
     return compileWithR8(app, proguardConfig, optionsConsumer, Backend.DEX);
   }
 
@@ -1509,7 +1509,7 @@
   /**
    * Disassemble the content of an application. Only works for an application with only dex code.
    */
-  protected void disassemble(AndroidApp app) throws Exception {
+  protected void disassemble(AndroidApp app) {
     InternalOptions options = new InternalOptions();
     System.out.println(SmaliWriter.smali(app, options));
   }
diff --git a/src/test/java/com/android/tools/r8/TestCompileResult.java b/src/test/java/com/android/tools/r8/TestCompileResult.java
index 05b91fd..dfdfa9d 100644
--- a/src/test/java/com/android/tools/r8/TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/TestCompileResult.java
@@ -175,7 +175,7 @@
   }
 
   @Deprecated
-  public RR run(String mainClass) throws ExecutionException, IOException {
+  public RR run(String mainClass) throws IOException {
     assert !libraryDesugaringTestConfiguration.isEnabled();
     ClassSubject mainClassSubject = inspector().clazz(mainClass);
     assertThat(mainClassSubject, isPresent());
@@ -206,8 +206,7 @@
     return run(runtime, mainClass, new String[] {});
   }
 
-  public RR run(TestRuntime runtime, String mainClass, String... args)
-      throws ExecutionException, IOException {
+  public RR run(TestRuntime runtime, String mainClass, String... args) throws IOException {
     assert getBackend() == runtime.getBackend();
     ClassSubject mainClassSubject = inspector().clazz(mainClass);
     if (!mainClassSubject.isPresent()) {
@@ -607,7 +606,7 @@
     return self();
   }
 
-  public CR disassemble(PrintStream ps) throws IOException, ExecutionException {
+  public CR disassemble(PrintStream ps) throws IOException {
     ToolHelper.disassemble(app, ps);
     return self();
   }
diff --git a/src/test/java/com/android/tools/r8/TestRunResultCollection.java b/src/test/java/com/android/tools/r8/TestRunResultCollection.java
index c5421ac..26924d2 100644
--- a/src/test/java/com/android/tools/r8/TestRunResultCollection.java
+++ b/src/test/java/com/android/tools/r8/TestRunResultCollection.java
@@ -60,7 +60,7 @@
 
   @Override
   public <E extends Throwable> RR inspectFailure(ThrowingConsumer<CodeInspector, E> consumer)
-      throws IOException, E {
+      throws E {
     throw new Unimplemented();
   }
 
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 1a92de0..1455760 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -1240,7 +1240,7 @@
   }
 
   public static DirectMappedDexApplication buildApplicationWithAndroidJar(
-      List<String> fileNames, Path androidJar) throws IOException, ExecutionException {
+      List<String> fileNames, Path androidJar) throws IOException {
     AndroidApp input =
         AndroidApp.builder()
             .addProgramFiles(ListUtils.map(fileNames, Paths::get))
@@ -1585,14 +1585,13 @@
     return forkJavaWithJarAndJavaOptions(dir, r8Jar, Arrays.asList(args), javaOptions);
   }
 
-  public static ProcessResult forkR8Jar(Path dir, String... args)
-      throws IOException, InterruptedException {
+  public static ProcessResult forkR8Jar(Path dir, String... args) throws IOException {
     String r8Jar = R8_JAR.toAbsolutePath().toString();
     return forkJavaWithJar(dir, r8Jar, Arrays.asList(args));
   }
 
   public static ProcessResult forkGenerateMainDexList(Path dir, List<String> args1, String... args2)
-      throws IOException, InterruptedException {
+      throws IOException {
     List<String> args = new ArrayList<>();
     args.addAll(args1);
     args.addAll(Arrays.asList(args2));
@@ -1604,8 +1603,7 @@
     return forkJava(dir, GenerateMainDexList.class, args);
   }
 
-  private static ProcessResult forkJava(Path dir, Class clazz, String... args)
-      throws IOException, InterruptedException {
+  private static ProcessResult forkJava(Path dir, Class clazz, String... args) throws IOException {
     return forkJava(dir, clazz, Arrays.asList(args));
   }
 
@@ -2318,8 +2316,7 @@
         directory,
         new SimpleFileVisitor<Path>() {
           @Override
-          public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
-              throws IOException {
+          public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
             if (isDexFile(file)) {
               builder.addProgramFile(file);
             }
diff --git a/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java b/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java
index 8fcc3f7..5c85d69 100644
--- a/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java
+++ b/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java
@@ -48,7 +48,7 @@
   }
 
   @NeverInline
-  private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+  private void readObject(ObjectInputStream in) throws IOException {
     System.out.println("Serializable::read");
     value = in.readInt();
   }
diff --git a/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java b/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java
index dc8dee7..d9f22f7 100644
--- a/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java
+++ b/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java
@@ -24,7 +24,6 @@
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -50,7 +49,7 @@
   }
 
   @Test
-  public void testR8() throws IOException, CompilationFailedException, ExecutionException {
+  public void testR8() throws IOException, CompilationFailedException {
     KotlinCompiler kotlinc = kotlinTestParameters.getCompiler();
     Path kotlinSources =
         kotlinc(
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java
index fe88045..9ef5912 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java
@@ -168,7 +168,7 @@
 
   public static class Main {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       Caller.createAndCallFoo();
       new B().foo();
     }
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelVirtualDispatchInterfaceOverrideTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelVirtualDispatchInterfaceOverrideTest.java
index da3050f..9c082d1 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelVirtualDispatchInterfaceOverrideTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelVirtualDispatchInterfaceOverrideTest.java
@@ -70,7 +70,7 @@
 
   public static class Main {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       AssetManager manager = null;
       manager.close();
     }
diff --git a/src/test/java/com/android/tools/r8/bridgeremoval/hoisting/BridgesAndNonBridgesHoistingTest.java b/src/test/java/com/android/tools/r8/bridgeremoval/hoisting/BridgesAndNonBridgesHoistingTest.java
index c6a1c88..602482b 100644
--- a/src/test/java/com/android/tools/r8/bridgeremoval/hoisting/BridgesAndNonBridgesHoistingTest.java
+++ b/src/test/java/com/android/tools/r8/bridgeremoval/hoisting/BridgesAndNonBridgesHoistingTest.java
@@ -26,7 +26,7 @@
   }
 
   @Test
-  public void test() throws Exception {}
+  public void test() {}
 
   static class TestClass {
 
diff --git a/src/test/java/com/android/tools/r8/cf/AlwaysNullGetItemDump.java b/src/test/java/com/android/tools/r8/cf/AlwaysNullGetItemDump.java
index 9bc385a..06e5e66 100644
--- a/src/test/java/com/android/tools/r8/cf/AlwaysNullGetItemDump.java
+++ b/src/test/java/com/android/tools/r8/cf/AlwaysNullGetItemDump.java
@@ -15,7 +15,7 @@
 // tools/asmifier.py build/classes/test/com/android/tools/r8/cf/AlwaysNullGetItemTest.class
 // and edited to replace calls to get{Object,Typed}Array() with ACONST_NULL (without CHECKCAST).
 public class AlwaysNullGetItemDump implements Opcodes {
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/cf/CfVersionTest.java b/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
index ea38851..9f3bc16 100644
--- a/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
+++ b/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
@@ -28,7 +28,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     CfVersion v1_1 = CfVersion.V1_1;
     assertEquals(Opcodes.V1_1, v1_1.raw());
     assertEquals(45, v1_1.major());
diff --git a/src/test/java/com/android/tools/r8/cf/CloserTest.java b/src/test/java/com/android/tools/r8/cf/CloserTest.java
index 874eb8a..7965d4c 100644
--- a/src/test/java/com/android/tools/r8/cf/CloserTest.java
+++ b/src/test/java/com/android/tools/r8/cf/CloserTest.java
@@ -19,7 +19,7 @@
     return System.out;
   }
 
-  public void doSomething(String message) throws IOException {
+  public void doSomething(String message) {
     System.out.println(message);
   }
 
diff --git a/src/test/java/com/android/tools/r8/cf/FrameComparisonTest.java b/src/test/java/com/android/tools/r8/cf/FrameComparisonTest.java
index 095c7c4..397f026 100644
--- a/src/test/java/com/android/tools/r8/cf/FrameComparisonTest.java
+++ b/src/test/java/com/android/tools/r8/cf/FrameComparisonTest.java
@@ -30,7 +30,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     DexItemFactory dexItemFactory = new DexItemFactory();
     CfFrame f1 =
         CfFrame.builder()
diff --git a/src/test/java/com/android/tools/r8/cf/PackageInfoClassFileWithoutAbstractAccessModifierTest.java b/src/test/java/com/android/tools/r8/cf/PackageInfoClassFileWithoutAbstractAccessModifierTest.java
index 0db0bbf..f57ffb7 100644
--- a/src/test/java/com/android/tools/r8/cf/PackageInfoClassFileWithoutAbstractAccessModifierTest.java
+++ b/src/test/java/com/android/tools/r8/cf/PackageInfoClassFileWithoutAbstractAccessModifierTest.java
@@ -66,7 +66,7 @@
 
   // Some versions of javac would generate package-info class files without ACC_ABSTRACT.
   // Dump of it/unimi/dsi/fastutil/package-info.class from fastutil-8.5.8.jar.
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
     ClassWriter classWriter = new ClassWriter(0);
     classWriter.visit(
         V1_5, ACC_INTERFACE, "it/unimi/dsi/fastutil/package-info", null, "java/lang/Object", null);
diff --git a/src/test/java/com/android/tools/r8/cf/UninitializedInFrameDump.java b/src/test/java/com/android/tools/r8/cf/UninitializedInFrameDump.java
index 4f3f615..0cf26cc 100644
--- a/src/test/java/com/android/tools/r8/cf/UninitializedInFrameDump.java
+++ b/src/test/java/com/android/tools/r8/cf/UninitializedInFrameDump.java
@@ -13,7 +13,7 @@
 
 public class UninitializedInFrameDump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedGetFieldTest.java b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedGetFieldTest.java
index 34872cf..c331441 100644
--- a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedGetFieldTest.java
+++ b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedGetFieldTest.java
@@ -94,7 +94,7 @@
   // now putfield and getfield before initializing.
   static class MainDump implements Opcodes {
 
-    static byte[] dump() throws Exception {
+    static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       FieldVisitor fieldVisitor;
diff --git a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java
index 49f3a19..3cfa21e 100644
--- a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java
@@ -89,7 +89,7 @@
 
   static class MainDump implements Opcodes {
 
-    static byte[] dump() throws Exception {
+    static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedPutFieldTest.java b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedPutFieldTest.java
index 4c8fa72..694b116 100644
--- a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedPutFieldTest.java
+++ b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedPutFieldTest.java
@@ -95,7 +95,7 @@
   // now putfield before initializing this.
   static class MainDump implements Opcodes {
 
-    static byte[] dump() throws Exception {
+    static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       FieldVisitor fieldVisitor;
diff --git a/src/test/java/com/android/tools/r8/code/NativeMethodWithCodeTest.java b/src/test/java/com/android/tools/r8/code/NativeMethodWithCodeTest.java
index 9a226ac..c5bc938 100644
--- a/src/test/java/com/android/tools/r8/code/NativeMethodWithCodeTest.java
+++ b/src/test/java/com/android/tools/r8/code/NativeMethodWithCodeTest.java
@@ -22,7 +22,6 @@
 import com.google.common.collect.ImmutableList;
 import java.io.IOException;
 import java.nio.file.Path;
-import java.util.concurrent.ExecutionException;
 import org.junit.Test;
 
 public class NativeMethodWithCodeTest extends TestBase {
@@ -89,7 +88,7 @@
   }
 
   private MethodSubject getNativeMethod(String mainClassName, AndroidApp processedApp)
-      throws IOException, ExecutionException {
+      throws IOException {
     CodeInspector inspector = new CodeInspector(processedApp);
     ClassSubject mainSubject = inspector.clazz(mainClassName);
     return mainSubject.method("void", "n1", ImmutableList.of("java.lang.String"));
diff --git a/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java b/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
index a1c821e..244602f 100644
--- a/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
@@ -34,7 +34,7 @@
   }
 
   @Test
-  public void testD8DexNoDesugaring() throws Throwable {
+  public void testD8DexNoDesugaring() {
     assumeTrue(ToolHelper.isTestingR8Lib());
     assertThrows(
         CompilationFailedException.class,
diff --git a/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java b/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java
index 5d5e72a..9f6a935 100644
--- a/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java
+++ b/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java
@@ -180,8 +180,7 @@
   static class TestClass {
 
     public static CallSite bsmCreateCallSite(
-        MethodHandles.Lookup caller, String name, MethodType type, MethodHandle handle)
-        throws Throwable {
+        MethodHandles.Lookup caller, String name, MethodType type, MethodHandle handle) {
       return new ConstantCallSite(handle);
     }
 
diff --git a/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeDynamicVirtualDispatchToDefaultInterfaceMethodTest.java b/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeDynamicVirtualDispatchToDefaultInterfaceMethodTest.java
index 3511307..c8291eb 100644
--- a/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeDynamicVirtualDispatchToDefaultInterfaceMethodTest.java
+++ b/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeDynamicVirtualDispatchToDefaultInterfaceMethodTest.java
@@ -128,8 +128,7 @@
   static class TestClass {
 
     public static CallSite bsmCreateCallSite(
-        MethodHandles.Lookup caller, String name, MethodType type, MethodHandle handle)
-        throws Throwable {
+        MethodHandles.Lookup caller, String name, MethodType type, MethodHandle handle) {
       return new ConstantCallSite(handle);
     }
 
diff --git a/src/test/java/com/android/tools/r8/compatproguard/CompatProguardTest.java b/src/test/java/com/android/tools/r8/compatproguard/CompatProguardTest.java
index ede9fee..7c7a868 100644
--- a/src/test/java/com/android/tools/r8/compatproguard/CompatProguardTest.java
+++ b/src/test/java/com/android/tools/r8/compatproguard/CompatProguardTest.java
@@ -14,7 +14,7 @@
 
 public class CompatProguardTest {
 
-  private CompatProguardOptions parseArgs(String... args)throws Exception  {
+  private CompatProguardOptions parseArgs(String... args) {
     return CompatProguard.CompatProguardOptions.parse(args);
   }
 
diff --git a/src/test/java/com/android/tools/r8/compilerapi/diagnostics/UnsupportedFeaturesDiagnosticApiTest.java b/src/test/java/com/android/tools/r8/compilerapi/diagnostics/UnsupportedFeaturesDiagnosticApiTest.java
index efcbe63..3c22eee 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/diagnostics/UnsupportedFeaturesDiagnosticApiTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/diagnostics/UnsupportedFeaturesDiagnosticApiTest.java
@@ -38,7 +38,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     check(UnsupportedDefaultInterfaceMethodDiagnostic::new, "default-interface-method", 24);
     check(UnsupportedStaticInterfaceMethodDiagnostic::new, "static-interface-method", 24);
     check(UnsupportedPrivateInterfaceMethodDiagnostic::new, "private-interface-method", 24);
@@ -97,7 +97,7 @@
     }
 
     @Test
-    public void test() throws Exception {
+    public void test() {
       run(null, str -> {});
     }
   }
diff --git a/src/test/java/com/android/tools/r8/compilerapi/globalsynthetics/GlobalSyntheticsTest.java b/src/test/java/com/android/tools/r8/compilerapi/globalsynthetics/GlobalSyntheticsTest.java
index e711b40..2a9a79e 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/globalsynthetics/GlobalSyntheticsTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/globalsynthetics/GlobalSyntheticsTest.java
@@ -10,7 +10,6 @@
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.GlobalSyntheticsConsumer;
 import com.android.tools.r8.GlobalSyntheticsResourceProvider;
-import com.android.tools.r8.ResourceException;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.compilerapi.CompilerApiTest;
 import com.android.tools.r8.compilerapi.CompilerApiTestRunner;
@@ -52,7 +51,7 @@
             }
 
             @Override
-            public InputStream getByteStream() throws ResourceException {
+            public InputStream getByteStream() {
               throw new IllegalStateException();
             }
           };
diff --git a/src/test/java/com/android/tools/r8/compilerapi/testsetup/ApiTestingSetUpTest.java b/src/test/java/com/android/tools/r8/compilerapi/testsetup/ApiTestingSetUpTest.java
index 7cf5b65..e017c2c 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/testsetup/ApiTestingSetUpTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/testsetup/ApiTestingSetUpTest.java
@@ -36,7 +36,7 @@
     }
 
     @Test
-    public void testNonExistingApiUse() throws Exception {
+    public void testNonExistingApiUse() {
       try {
         new InternalOptions();
         // When running directly the class is public and visible.
diff --git a/src/test/java/com/android/tools/r8/compilerapi/wrappers/EnableMissingLibraryApiModelingTest.java b/src/test/java/com/android/tools/r8/compilerapi/wrappers/EnableMissingLibraryApiModelingTest.java
index 115212d..af45db8 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/wrappers/EnableMissingLibraryApiModelingTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/wrappers/EnableMissingLibraryApiModelingTest.java
@@ -32,7 +32,7 @@
       super(parameters);
     }
 
-    public void run() throws Exception {
+    public void run() {
       D8Command.builder().setEnableExperimentalMissingLibraryApiModeling(true);
       R8Command.builder().setEnableExperimentalMissingLibraryApiModeling(true);
     }
diff --git a/src/test/java/com/android/tools/r8/d8/MemberAndLocalClassTest.java b/src/test/java/com/android/tools/r8/d8/MemberAndLocalClassTest.java
index 4afa6ac..edf757e 100644
--- a/src/test/java/com/android/tools/r8/d8/MemberAndLocalClassTest.java
+++ b/src/test/java/com/android/tools/r8/d8/MemberAndLocalClassTest.java
@@ -58,7 +58,7 @@
   // and added EnclosingMethod attribute as described at b/137881258#comment7
   private static class Dump implements Opcodes {
 
-    public static byte[] dump () throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/d8/NonNamedMemberClassTest.java b/src/test/java/com/android/tools/r8/d8/NonNamedMemberClassTest.java
index fb4d472..8ccf7bd 100644
--- a/src/test/java/com/android/tools/r8/d8/NonNamedMemberClassTest.java
+++ b/src/test/java/com/android/tools/r8/d8/NonNamedMemberClassTest.java
@@ -49,7 +49,7 @@
   // and removed inner-name, Companion.
   private static class Dump implements Opcodes {
 
-    public static byte[] dump () throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/d8/TestADump.java b/src/test/java/com/android/tools/r8/d8/TestADump.java
index 610d194..1f13fb7 100644
--- a/src/test/java/com/android/tools/r8/d8/TestADump.java
+++ b/src/test/java/com/android/tools/r8/d8/TestADump.java
@@ -11,7 +11,7 @@
 
 class TestADump implements Opcodes {
 
-  public static byte[] dump () throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/debug/ArrayDimensionGreaterThanSevenTestDump.java b/src/test/java/com/android/tools/r8/debug/ArrayDimensionGreaterThanSevenTestDump.java
index 8d79472..563f6da 100644
--- a/src/test/java/com/android/tools/r8/debug/ArrayDimensionGreaterThanSevenTestDump.java
+++ b/src/test/java/com/android/tools/r8/debug/ArrayDimensionGreaterThanSevenTestDump.java
@@ -13,7 +13,7 @@
 
 public class ArrayDimensionGreaterThanSevenTestDump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java b/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java
index f8dfef5..cee9b2a 100644
--- a/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java
+++ b/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java
@@ -21,7 +21,7 @@
   private static D8DebugTestConfig d8Config;
 
   @BeforeClass
-  public static void setup() throws Exception {
+  public static void setup() {
     // Force inversion of all conditionals to reliably construct a regression test for incorrect
     // line information when reordering blocks.
     d8Config =
diff --git a/src/test/java/com/android/tools/r8/debug/BreakPointEventsTestRunner.java b/src/test/java/com/android/tools/r8/debug/BreakPointEventsTestRunner.java
index cee1fec..9031043 100644
--- a/src/test/java/com/android/tools/r8/debug/BreakPointEventsTestRunner.java
+++ b/src/test/java/com/android/tools/r8/debug/BreakPointEventsTestRunner.java
@@ -32,11 +32,11 @@
     return ToolHelper.getClassFileForTestClass(CLASS);
   }
 
-  public static DebugTestConfig cfConfig() throws Exception {
+  public static DebugTestConfig cfConfig() {
     return new CfDebugTestConfig(ToolHelper.getClassPathForTests());
   }
 
-  public static DebugTestConfig d8Config() throws Exception {
+  public static DebugTestConfig d8Config() {
     return new D8DebugTestConfig().compileAndAdd(getStaticTemp(), getClassFilePath());
   }
 
diff --git a/src/test/java/com/android/tools/r8/debug/D8DebugTestResourcesConfig.java b/src/test/java/com/android/tools/r8/debug/D8DebugTestResourcesConfig.java
index 33d51cf..2425d7c 100644
--- a/src/test/java/com/android/tools/r8/debug/D8DebugTestResourcesConfig.java
+++ b/src/test/java/com/android/tools/r8/debug/D8DebugTestResourcesConfig.java
@@ -14,7 +14,7 @@
 
   private static AndroidApp compiledResources = null;
 
-  private static synchronized AndroidApp getCompiledResources() throws Throwable {
+  private static synchronized AndroidApp getCompiledResources() {
     if (compiledResources == null) {
       compiledResources = d8Compile(Collections.singletonList(DebugTestBase.DEBUGGEE_JAR), null);
     }
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index 93d4735..b0187f7 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -894,7 +894,7 @@
     }
 
     @Override
-    protected void runTest() throws Throwable {
+    protected void runTest() {
       if (DEBUG_TESTS) {
         logWriter.println("Starts loop with " + commandsQueue.size() + " command(s) to process");
       }
diff --git a/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java b/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
index ac24399..e35ce1f 100644
--- a/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
+++ b/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
@@ -335,7 +335,7 @@
         .run();
   }
 
-  private DebugStreamComparator init(String pkg, String clazz) throws Exception {
+  private DebugStreamComparator init(String pkg, String clazz) {
     // TODO(b/199700280): Reenable on 12.0.0 when we have the libjdwp.so file include and the flags
     // fixed.
     Assume.assumeTrue(
diff --git a/src/test/java/com/android/tools/r8/debuginfo/DebugInfoDump.java b/src/test/java/com/android/tools/r8/debuginfo/DebugInfoDump.java
index df03ac3..ca2d1dd 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/DebugInfoDump.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/DebugInfoDump.java
@@ -15,7 +15,7 @@
   private static final String INTERNAL_NAME = "Foo";
   public static final String CLASS_NAME = INTERNAL_NAME.replace('/', '.');
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/debuginfo/DebugInfoInspector.java b/src/test/java/com/android/tools/r8/debuginfo/DebugInfoInspector.java
index 00409e1..ce48b16 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/DebugInfoInspector.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/DebugInfoInspector.java
@@ -25,7 +25,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -56,7 +55,7 @@
   }
 
   public DebugInfoInspector(AndroidApp app, String clazz, MethodSignature method)
-      throws IOException, ExecutionException {
+      throws IOException {
     this(new CodeInspector(app), clazz, method);
   }
 
diff --git a/src/test/java/com/android/tools/r8/debuginfo/KotlinDebugInfoTestRunner.java b/src/test/java/com/android/tools/r8/debuginfo/KotlinDebugInfoTestRunner.java
index cb0ee5c..f2fa291 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/KotlinDebugInfoTestRunner.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/KotlinDebugInfoTestRunner.java
@@ -65,7 +65,7 @@
     test(DebugInfoDump.dump(), DebugInfoDump.CLASS_NAME);
   }
 
-  public void test(byte[] bytes, String className) throws Exception {}
+  public void test(byte[] bytes, String className) {}
 
   public void test(
       byte[] bytes, String className, ThrowableConsumer<R8FullTestBuilder> configuration)
diff --git a/src/test/java/com/android/tools/r8/debuginfo/KotlinReflectionDump.java b/src/test/java/com/android/tools/r8/debuginfo/KotlinReflectionDump.java
index ac2a8ff..7eee83e 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/KotlinReflectionDump.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/KotlinReflectionDump.java
@@ -18,7 +18,7 @@
   private static final String INTERNAL_NAME = "kotlin/jvm/internal/Reflection";
   public static final String CLASS_NAME = INTERNAL_NAME.replace('/', '.');
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/debuginfo/KotlinRingBufferDump.java b/src/test/java/com/android/tools/r8/debuginfo/KotlinRingBufferDump.java
index 4811648..8510746 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/KotlinRingBufferDump.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/KotlinRingBufferDump.java
@@ -16,7 +16,7 @@
   public static final String DESCRIPTOR = "L" + INTERNAL_NAME + ";";
   public static final String CLASS_NAME = "kotlin.collections.RingBuffer";
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
@@ -42,7 +42,37 @@
         AnnotationVisitor av1 = av0.visitArray("d1");
         av1.visit(
             null,
-            "\u0000>\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0008\n\u0002\u0008\u0002\n\u0002\u0010\u0011\n\u0002\u0010\u0000\n\u0002\u0008\u0009\n\u0002\u0010\u0002\n\u0002\u0008\u0006\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010(\n\u0002\u0008\u000c\u0008\u0002\u0018\u0000*\u0004\u0008\u0000\u0010\u00012\u0008\u0012\u0004\u0012\u0002H\u00010\u00022\u00060\u0003j\u0002`\u0004B\r\u0012\u0006\u0010\u0005\u001a\u00020\u0006\u00a2\u0006\u0002\u0010\u0007J\u0013\u0010\u0013\u001a\u00020\u00142\u0006\u0010\u0015\u001a\u00028\u0000\u00a2\u0006\u0002\u0010\u0016J\u0016\u0010\u0017\u001a\u00028\u00002\u0006\u0010\u0018\u001a\u00020\u0006H\u0096\u0002\u00a2\u0006\u0002\u0010\u0019J\u0006\u0010\u001a\u001a\u00020\u001bJ\u000f\u0010\u001c\u001a\u0008\u0012\u0004\u0012\u00028\u00000\u001dH\u0096\u0002J\u000e\u0010\u001e\u001a\u00020\u00142\u0006\u0010\u001f\u001a\u00020\u0006J\u0015\u0010 \u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\n0\u0009H\u0014\u00a2\u0006\u0002\u0010!J'\u0010 \u001a\u0008\u0012\u0004\u0012\u0002H\u00010\u0009\"\u0004\u0008\u0001\u0010\u00012\u000c\u0010\"\u001a\u0008\u0012\u0004\u0012\u0002H\u00010\u0009H\u0015\u00a2\u0006\u0002\u0010#J9\u0010$\u001a\u00020\u0014\"\u0004\u0008\u0001\u0010\u0001*\u0008\u0012\u0004\u0012\u0002H\u00010\u00092\u0006\u0010\u0015\u001a\u0002H\u00012\u0008\u0008\u0002\u0010%\u001a\u00020\u00062\u0008\u0008\u0002\u0010&\u001a\u00020\u0006H\u0002\u00a2\u0006\u0002\u0010'J\u0015\u0010(\u001a\u00020\u0006*\u00020\u00062\u0006\u0010\u001f\u001a\u00020\u0006H\u0083\u0008R\u0018\u0010\u0008\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\n0\u0009X\u0082\u0004\u00a2\u0006\u0004\n\u0002\u0010\u000bR\u0011\u0010\u0005\u001a\u00020\u0006\u00a2\u0006\u0008\n\u0000\u001a\u0004\u0008\u000c\u0010\rR$\u0010\u000f\u001a\u00020\u00062\u0006\u0010\u000e\u001a\u00020\u0006@RX\u0096\u000e\u00a2\u0006\u000e\n\u0000\u001a\u0004\u0008\u0010\u0010\r\"\u0004\u0008\u0011\u0010\u0007R\u000e\u0010\u0012\u001a\u00020\u0006X\u0082\u000e\u00a2\u0006\u0002\n\u0000\u00a8\u0006)");
+            "\u0000>\n"
+                + "\u0002\u0018\u0002\n"
+                + "\u0000\n"
+                + "\u0002\u0018\u0002\n"
+                + "\u0002\u0018\u0002\n"
+                + "\u0002\u0018\u0002\n"
+                + "\u0000\n"
+                + "\u0002\u0010\u0008\n"
+                + "\u0002\u0008\u0002\n"
+                + "\u0002\u0010\u0011\n"
+                + "\u0002\u0010\u0000\n"
+                + "\u0002\u0008\u0009\n"
+                + "\u0002\u0010\u0002\n"
+                + "\u0002\u0008\u0006\n"
+                + "\u0002\u0010\u000b\n"
+                + "\u0000\n"
+                + "\u0002\u0010(\n"
+                + "\u0002\u0008\u000c\u0008\u0002\u0018\u0000*\u0004\u0008\u0000\u0010\u00012\u0008\u0012\u0004\u0012\u0002H\u00010\u00022\u00060\u0003j\u0002`\u0004B\r"
+                + "\u0012\u0006\u0010\u0005\u001a\u00020\u0006\u00a2\u0006\u0002\u0010\u0007J\u0013\u0010\u0013\u001a\u00020\u00142\u0006\u0010\u0015\u001a\u00028\u0000\u00a2\u0006\u0002\u0010\u0016J\u0016\u0010\u0017\u001a\u00028\u00002\u0006\u0010\u0018\u001a\u00020\u0006H\u0096\u0002\u00a2\u0006\u0002\u0010\u0019J\u0006\u0010\u001a\u001a\u00020\u001bJ\u000f\u0010\u001c\u001a\u0008\u0012\u0004\u0012\u00028\u00000\u001dH\u0096\u0002J\u000e\u0010\u001e\u001a\u00020\u00142\u0006\u0010\u001f\u001a\u00020\u0006J\u0015\u0010"
+                + " \u001a\n"
+                + "\u0012\u0006\u0012\u0004\u0018\u00010\n"
+                + "0\u0009H\u0014\u00a2\u0006\u0002\u0010!J'\u0010"
+                + " \u001a\u0008\u0012\u0004\u0012\u0002H\u00010\u0009\"\u0004\u0008\u0001\u0010\u00012\u000c\u0010\"\u001a\u0008\u0012\u0004\u0012\u0002H\u00010\u0009H\u0015\u00a2\u0006\u0002\u0010#J9\u0010$\u001a\u00020\u0014\"\u0004\u0008\u0001\u0010\u0001*\u0008\u0012\u0004\u0012\u0002H\u00010\u00092\u0006\u0010\u0015\u001a\u0002H\u00012\u0008\u0008\u0002\u0010%\u001a\u00020\u00062\u0008\u0008\u0002\u0010&\u001a\u00020\u0006H\u0002\u00a2\u0006\u0002\u0010'J\u0015\u0010(\u001a\u00020\u0006*\u00020\u00062\u0006\u0010\u001f\u001a\u00020\u0006H\u0083\u0008R\u0018\u0010\u0008\u001a\n"
+                + "\u0012\u0006\u0012\u0004\u0018\u00010\n"
+                + "0\u0009X\u0082\u0004\u00a2\u0006\u0004\n"
+                + "\u0002\u0010\u000bR\u0011\u0010\u0005\u001a\u00020\u0006\u00a2\u0006\u0008\n"
+                + "\u0000\u001a\u0004\u0008\u000c\u0010\r"
+                + "R$\u0010\u000f\u001a\u00020\u00062\u0006\u0010\u000e\u001a\u00020\u0006@RX\u0096\u000e\u00a2\u0006\u000e\n"
+                + "\u0000\u001a\u0004\u0008\u0010\u0010\r"
+                + "\"\u0004\u0008\u0011\u0010\u0007R\u000e\u0010\u0012\u001a\u00020\u0006X\u0082\u000e\u00a2\u0006\u0002\n"
+                + "\u0000\u00a8\u0006)");
         av1.visitEnd();
       }
       {
diff --git a/src/test/java/com/android/tools/r8/debuginfo/PreamblePositionTestSourceDump.java b/src/test/java/com/android/tools/r8/debuginfo/PreamblePositionTestSourceDump.java
index 7067295..89b6ea2 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/PreamblePositionTestSourceDump.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/PreamblePositionTestSourceDump.java
@@ -33,7 +33,7 @@
 
   static final int FALSE_BRANCH_LINE_NUMBER = 123;
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/debuginfo/Regress111337896Test.java b/src/test/java/com/android/tools/r8/debuginfo/Regress111337896Test.java
index bcb8215..76daa36 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/Regress111337896Test.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/Regress111337896Test.java
@@ -29,7 +29,7 @@
     throw new Exception();
   }
 
-  public static void noThrow() throws Exception {
+  public static void noThrow() {
     // Intentionally empty.
   }
 
diff --git a/src/test/java/com/android/tools/r8/debuginfo/Regress129901036Test.java b/src/test/java/com/android/tools/r8/debuginfo/Regress129901036Test.java
index 294662c..0525eca 100644
--- a/src/test/java/com/android/tools/r8/debuginfo/Regress129901036Test.java
+++ b/src/test/java/com/android/tools/r8/debuginfo/Regress129901036Test.java
@@ -24,7 +24,7 @@
     }
   }
 
-  public static void noThrow() throws Exception {
+  public static void noThrow() {
     // Intentionally empty.
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/LambdaHasNonSyntheticMethodTest.java b/src/test/java/com/android/tools/r8/desugar/LambdaHasNonSyntheticMethodTest.java
index 656cea6..c259adc 100644
--- a/src/test/java/com/android/tools/r8/desugar/LambdaHasNonSyntheticMethodTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/LambdaHasNonSyntheticMethodTest.java
@@ -38,7 +38,7 @@
   }
 
   interface MyCallable<T> {
-    T call() throws Exception;
+    T call();
   }
 
   static class TestClass {
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java
index 3032a12..1c95fa0 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java
@@ -35,7 +35,7 @@
   public static class Main extends MiniAssert {
     public volatile String field;
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       AtomicReferenceArray<String> reference = new AtomicReferenceArray<>(new String[1]);
       assertTrue(reference.compareAndSet(0, null, "A"));
       assertTrue(reference.compareAndSet(0, "A", "B"));
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceFieldUpdaterTest.java b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceFieldUpdaterTest.java
index 1e66d40..ac1bb54 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceFieldUpdaterTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceFieldUpdaterTest.java
@@ -35,7 +35,7 @@
   public static class Main extends MiniAssert {
     public volatile String field;
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       AtomicReferenceFieldUpdater<Main, String> updater =
           AtomicReferenceFieldUpdater.newUpdater(Main.class, String.class, "field");
       Main x = new Main();
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java
index 6dc9faf..8506aec 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java
@@ -35,7 +35,7 @@
   public static class Main extends MiniAssert {
     public volatile String field;
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       AtomicReference<String> reference = new AtomicReference<>(null);
       assertTrue(reference.compareAndSet(null, "A"));
       assertTrue(reference.compareAndSet("A", "B"));
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DumpCoreLibUsage.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DumpCoreLibUsage.java
index ae4eda0..9d66723 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DumpCoreLibUsage.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DumpCoreLibUsage.java
@@ -27,7 +27,6 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 
 public class DumpCoreLibUsage {
   public boolean usesTypeFromPackage(String pkg, DexField field) {
@@ -62,7 +61,7 @@
 
   private Set<DexReference> checkPackage(
       String pkg, AndroidApiLevel apiLevel, Set<DexReference> filter, DexItemFactory factory)
-      throws IOException, ExecutionException {
+      throws IOException {
     AndroidApp input =
         AndroidApp.builder().addLibraryFiles(ToolHelper.getAndroidJar(apiLevel)).build();
     DirectMappedDexApplication dexApplication =
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LegacyDesugaredLibraryConfigurationParsingTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LegacyDesugaredLibraryConfigurationParsingTest.java
index c08abd3..c7976af 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LegacyDesugaredLibraryConfigurationParsingTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LegacyDesugaredLibraryConfigurationParsingTest.java
@@ -119,7 +119,7 @@
   }
 
   @Test
-  public void testReference() throws Exception {
+  public void testReference() {
     // Just test that the reference file parses without issues.
     LegacyDesugaredLibrarySpecification spec =
         runPassing(StringResource.fromFile(libraryDesugaringSpecification.getSpecification()));
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/MaintainAndRewritePrefixTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/MaintainAndRewritePrefixTest.java
index 51b3660..45ff998 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/MaintainAndRewritePrefixTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/MaintainAndRewritePrefixTest.java
@@ -63,7 +63,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     try {
       testForL8(AndroidApiLevel.B, parameters.getBackend())
           .apply(libraryDesugaringSpecification::configureL8TestBuilder)
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
index bd8d7c5..7a5fb66 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
@@ -458,7 +458,7 @@
 
     This is added as a dump as it use APIs which are only abailable from JDK 9.
   */
-  public static byte[] dumpAndroidRUtilsObjectsMethods() throws Exception {
+  public static byte[] dumpAndroidRUtilsObjectsMethods() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FileChannelSizeTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FileChannelSizeTest.java
index 651f108..f3f8b01 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FileChannelSizeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FileChannelSizeTest.java
@@ -93,7 +93,7 @@
 
   public static class TestClass {
 
-    public static void main(String[] args) throws IOException {
+    public static void main(String[] args) {
       try {
         String toWrite = "Hello World! ";
         ByteBuffer byteBuffer = ByteBuffer.allocate(toWrite.length());
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
index 5259fb6..ee7cde7 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
@@ -135,18 +135,17 @@
     return this;
   }
 
-  public DesugaredLibraryTestBuilder<T> addClasspathClasses(Class<?>... clazz) throws IOException {
+  public DesugaredLibraryTestBuilder<T> addClasspathClasses(Class<?>... clazz) {
     builder.addClasspathClasses(clazz);
     return this;
   }
 
-  public DesugaredLibraryTestBuilder<T> addProgramClasses(Class<?>... clazz) throws IOException {
+  public DesugaredLibraryTestBuilder<T> addProgramClasses(Class<?>... clazz) {
     builder.addProgramClasses(clazz);
     return this;
   }
 
-  public DesugaredLibraryTestBuilder<T> addProgramClasses(Collection<Class<?>> clazz)
-      throws IOException {
+  public DesugaredLibraryTestBuilder<T> addProgramClasses(Collection<Class<?>> clazz) {
     builder.addProgramClasses(clazz);
     return this;
   }
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
index 224139d..221a5c7 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
@@ -75,7 +75,7 @@
   }
 
   public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspectL8ResidualArtProfile(
-      ThrowingConsumer<ArtProfileInspector, E> consumer) throws E, IOException, ExecutionException {
+      ThrowingConsumer<ArtProfileInspector, E> consumer) throws E, IOException {
     return inspectL8ResidualArtProfile(
         (rewrittenArtProfile, inspector) -> consumer.accept(rewrittenArtProfile));
   }
diff --git a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaFactoryTest.java b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaFactoryTest.java
index befc9dc..7315807 100644
--- a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaFactoryTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaFactoryTest.java
@@ -150,7 +150,7 @@
       System.out.println(s);
     }
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       ((Runnable) TestClass::greet).run();
       greet(System.out::println);
       ((MyTriConsumer<Long, Double, String>) TestClass::greetTri).accept(3L, 4.0, "5");
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeInterfaceTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeInterfaceTest.java
index ba294c2..1e32403 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeInterfaceTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeInterfaceTest.java
@@ -281,7 +281,7 @@
 
   */
 
-  public static byte[] dumpHost() throws Exception {
+  public static byte[] dumpHost() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -340,7 +340,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember1() throws Exception {
+  public static byte[] dumpMember1() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -377,7 +377,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember2() throws Exception {
+  public static byte[] dumpMember2() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -414,7 +414,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpHostImpl() throws Exception {
+  public static byte[] dumpHostImpl() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -488,7 +488,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember1Impl() throws Exception {
+  public static byte[] dumpMember1Impl() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -515,7 +515,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember2Impl() throws Exception {
+  public static byte[] dumpMember2Impl() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeSuperTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeSuperTest.java
index e297523..935006d 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeSuperTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeSuperTest.java
@@ -255,7 +255,7 @@
     }
   */
 
-  public static byte[] dumpHost() throws Exception {
+  public static byte[] dumpHost() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -331,7 +331,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember() throws Exception {
+  public static byte[] dumpMember() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -378,7 +378,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpSubMember() throws Exception {
+  public static byte[] dumpSubMember() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeVirtualTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeVirtualTest.java
index 91c0e74..11eecde 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeVirtualTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexRewriteInvokeVirtualTest.java
@@ -259,7 +259,7 @@
     }
   */
 
-  public static byte[] dumpHost() throws Exception {
+  public static byte[] dumpHost() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -355,7 +355,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember1() throws Exception {
+  public static byte[] dumpMember1() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -397,7 +397,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember2() throws Exception {
+  public static byte[] dumpMember2() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingFieldsTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingFieldsTest.java
index 73fdf45..d17ed48 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingFieldsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingFieldsTest.java
@@ -171,7 +171,7 @@
     access methods is not feasible.
   */
 
-  public static byte[] dumpHost(int fieldAccess) throws Exception {
+  public static byte[] dumpHost(int fieldAccess) {
     assert fieldAccess == ACC_PUBLIC || fieldAccess == ACC_PRIVATE;
 
     ClassWriter classWriter = new ClassWriter(0);
@@ -297,7 +297,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember1(int fieldAccess) throws Exception {
+  public static byte[] dumpMember1(int fieldAccess) {
     assert fieldAccess == ACC_PUBLIC || fieldAccess == ACC_PRIVATE;
 
     ClassWriter classWriter = new ClassWriter(0);
@@ -339,7 +339,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember2(int fieldAccess) throws Exception {
+  public static byte[] dumpMember2(int fieldAccess) {
     assert fieldAccess == ACC_PUBLIC || fieldAccess == ACC_PRIVATE;
 
     ClassWriter classWriter = new ClassWriter(0);
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingMethodsTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingMethodsTest.java
index 03ee74b..855c2e5 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesInDexShrinkingMethodsTest.java
@@ -170,7 +170,7 @@
     access methods is not feasible.
   */
 
-  public static byte[] dumpHost(int methodAccess) throws Exception {
+  public static byte[] dumpHost(int methodAccess) {
     assert methodAccess == ACC_PUBLIC || methodAccess == ACC_PRIVATE;
 
     ClassWriter classWriter = new ClassWriter(0);
@@ -267,7 +267,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember1(int methodAccess) throws Exception {
+  public static byte[] dumpMember1(int methodAccess) {
     assert methodAccess == ACC_PUBLIC || methodAccess == ACC_PRIVATE;
 
     ClassWriter classWriter = new ClassWriter(0);
@@ -310,7 +310,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] dumpMember2(int methodAccess) throws Exception {
+  public static byte[] dumpMember2(int methodAccess) {
     assert methodAccess == ACC_PUBLIC || methodAccess == ACC_PRIVATE;
 
     ClassWriter classWriter = new ClassWriter(0);
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
index dcd8bb1..9ac144b 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
@@ -58,7 +58,7 @@
   }
 
   @Test
-  public void testD8() throws Exception {
+  public void testD8() {
     testMissingNestHostError(true);
     testIncompleteNestError(true);
   }
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java b/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java
index cf819a3..fb80241 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java
@@ -56,7 +56,7 @@
   }
 
   @Test
-  public void testFailureWithoutGlobalSyntheticsConsumer() throws Exception {
+  public void testFailureWithoutGlobalSyntheticsConsumer() {
     assertThrows(
         CompilationFailedException.class,
         () ->
diff --git a/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/InterfaceDump.java b/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/InterfaceDump.java
index 9e38986..7ea3995 100644
--- a/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/InterfaceDump.java
+++ b/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/InterfaceDump.java
@@ -19,7 +19,7 @@
  */
 public class InterfaceDump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/MainDump.java b/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/MainDump.java
index 5736caa..20fd03886 100644
--- a/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/MainDump.java
+++ b/src/test/java/com/android/tools/r8/desugar/staticinterfacemethod/MainDump.java
@@ -23,7 +23,7 @@
  */
 public class MainDump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/dex/whitespaceinidentifiers/WhiteSpaceInIdentifiersTest.java b/src/test/java/com/android/tools/r8/dex/whitespaceinidentifiers/WhiteSpaceInIdentifiersTest.java
index c3b55fe..c4d22dd 100644
--- a/src/test/java/com/android/tools/r8/dex/whitespaceinidentifiers/WhiteSpaceInIdentifiersTest.java
+++ b/src/test/java/com/android/tools/r8/dex/whitespaceinidentifiers/WhiteSpaceInIdentifiersTest.java
@@ -93,7 +93,7 @@
   }
 
   @Test
-  public void testR8() throws Exception {
+  public void testR8() {
     assumeParametersWithSupportForWhitespaceInIdentifiers();
     Exception e =
         assertThrows(
diff --git a/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java b/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java
index e553e11..cf890cf 100644
--- a/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java
+++ b/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java
@@ -72,7 +72,7 @@
   }
 
   @Test
-  public void testTwoFeatures() throws CompilationFailedException, IOException, ExecutionException {
+  public void testTwoFeatures() throws CompilationFailedException, IOException {
     CompiledWithFeature compiledWithFeature = new CompiledWithFeature().invoke();
     Path basePath = compiledWithFeature.getBasePath();
     Path feature1Path = compiledWithFeature.getFeature1Path();
diff --git a/src/test/java/com/android/tools/r8/diagnostics/ErrorDuringIrConversionTest.java b/src/test/java/com/android/tools/r8/diagnostics/ErrorDuringIrConversionTest.java
index 5fe49e5..07d4b2f3 100644
--- a/src/test/java/com/android/tools/r8/diagnostics/ErrorDuringIrConversionTest.java
+++ b/src/test/java/com/android/tools/r8/diagnostics/ErrorDuringIrConversionTest.java
@@ -84,7 +84,7 @@
   }
 
   @Test
-  public void testNPE() throws Exception {
+  public void testNPE() {
     try {
       testForD8()
           .apply(addTestClassWithOrigin())
@@ -110,7 +110,7 @@
   }
 
   @Test
-  public void testFatalError() throws Exception {
+  public void testFatalError() {
     try {
       testForD8()
           .apply(addTestClassWithOrigin())
@@ -146,7 +146,7 @@
   }
 
   @Test
-  public void testThreeErrors() throws Exception {
+  public void testThreeErrors() {
     AtomicBoolean doError = new AtomicBoolean(true);
     try {
       testForD8()
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastClassInitializerTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastClassInitializerTest.java
index d07311b..2334fe6 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastClassInitializerTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastClassInitializerTest.java
@@ -97,7 +97,7 @@
 
   public static class Main implements I {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println(MyEnum.A.otherEnum.get());
       System.out.println(new Main().get());
     }
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastInReturnTypeTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastInReturnTypeTest.java
index 349f8e3..92f686d 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastInReturnTypeTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumImplementingInterfaceImplicitUpcastInReturnTypeTest.java
@@ -83,7 +83,7 @@
 
     public static I i;
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       I i = System.currentTimeMillis() == 0 ? new Main() : identity(MyEnum.C);
       setInterfaceValue(i);
       System.out.println(Main.i.get());
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumInEnumFieldTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumInEnumFieldTest.java
index d5e9688..84b73ac 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumInEnumFieldTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumInEnumFieldTest.java
@@ -74,7 +74,7 @@
 
   public static class Main {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       set(System.currentTimeMillis() > 0 ? OtherEnum.C : OtherEnum.D);
       System.out.println(MyEnum.A.otherEnum.ordinal());
     }
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceInsideAndOutsideTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceInsideAndOutsideTest.java
index a9116d7..a84d1db 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceInsideAndOutsideTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceInsideAndOutsideTest.java
@@ -71,7 +71,7 @@
 
   public static class Main {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       set(System.currentTimeMillis() > 0 ? 42 : 0);
       System.out.println(MyEnum.B.instanceValue);
     }
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceOutsideTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceOutsideTest.java
index 6bd1e12..58a93c6 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceOutsideTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumInstanceFieldReferenceOutsideTest.java
@@ -67,7 +67,7 @@
 
   public static class Main {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       set(System.currentTimeMillis() > 0 ? 42 : 0);
       System.out.println(MyEnum.B.instanceValue);
     }
diff --git a/src/test/java/com/android/tools/r8/graph/MethodWithoutCodeAttributeTest.java b/src/test/java/com/android/tools/r8/graph/MethodWithoutCodeAttributeTest.java
index fe1bdad..9198aec 100644
--- a/src/test/java/com/android/tools/r8/graph/MethodWithoutCodeAttributeTest.java
+++ b/src/test/java/com/android/tools/r8/graph/MethodWithoutCodeAttributeTest.java
@@ -61,7 +61,7 @@
   }
 
   static class TestDump implements Opcodes {
-    public static byte[] dump () throws Exception {
+    public static byte[] dump() {
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
 
diff --git a/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java b/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java
index 588ad23..522639b 100644
--- a/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java
+++ b/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java
@@ -219,7 +219,7 @@
   public interface I {}
 
   public interface J<T> {
-    <R extends Object & I & J<Integer>> R foo(T foo) throws CustomException;
+    <R extends Object & I & J<Integer>> R foo(T foo);
   }
 
   public static class Base<T> {}
diff --git a/src/test/java/com/android/tools/r8/graph/genericsignature/UnboundedFormalTypeGenericSignatureTest.java b/src/test/java/com/android/tools/r8/graph/genericsignature/UnboundedFormalTypeGenericSignatureTest.java
index 0c4edba..9d52f49 100644
--- a/src/test/java/com/android/tools/r8/graph/genericsignature/UnboundedFormalTypeGenericSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/graph/genericsignature/UnboundedFormalTypeGenericSignatureTest.java
@@ -137,7 +137,7 @@
 
   public static class Main<T> extends Super<T> {
 
-    public static <R extends Super<R>> void main(String[] args) throws NoSuchMethodException {
+    public static <R extends Super<R>> void main(String[] args) {
       System.out.println(Main.class.getGenericSuperclass());
       testStatic();
       new Main<>().testVirtual();
diff --git a/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java b/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
index b039897..0990e64 100644
--- a/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
+++ b/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
@@ -138,9 +138,8 @@
     return checkVerification(outputApp.build(), referenceApk);
   }
 
-
   public AndroidApp checkVerification(AndroidApp outputApp, String referenceApk)
-      throws IOException, ExecutionException {
+      throws IOException {
     Path out = temp.getRoot().toPath().resolve("all.zip");
     Path oatFile = temp.getRoot().toPath().resolve("all.oat");
     outputApp.writeToZipForTesting(out, OutputMode.DexIndexed);
@@ -201,8 +200,7 @@
   }
 
   public void assertIdenticalApplicationsUpToCode(
-      AndroidApp app1, AndroidApp app2, boolean allowNewClassesInApp2)
-      throws IOException, ExecutionException {
+      AndroidApp app1, AndroidApp app2, boolean allowNewClassesInApp2) throws IOException {
     CodeInspector inspect1 = new CodeInspector(app1);
     CodeInspector inspect2 = new CodeInspector(app2);
 
diff --git a/src/test/java/com/android/tools/r8/invalid/DuplicateProgramTypesTest.java b/src/test/java/com/android/tools/r8/invalid/DuplicateProgramTypesTest.java
index 5b49da0..0105f2f 100644
--- a/src/test/java/com/android/tools/r8/invalid/DuplicateProgramTypesTest.java
+++ b/src/test/java/com/android/tools/r8/invalid/DuplicateProgramTypesTest.java
@@ -65,7 +65,7 @@
     builder.addClassProgramData(bytes, originB);
   }
 
-  private void addResolvingHandler(BaseCompilerCommand.Builder<?, ?> builder) throws Exception {
+  private void addResolvingHandler(BaseCompilerCommand.Builder<?, ?> builder) {
     builder.setClassConflictResolver(
         (reference, origins, handler) -> {
           assertEquals(
@@ -74,7 +74,7 @@
         });
   }
 
-  private void addNonResolvingHandler(BaseCompilerCommand.Builder<?, ?> builder) throws Exception {
+  private void addNonResolvingHandler(BaseCompilerCommand.Builder<?, ?> builder) {
     builder.setClassConflictResolver(
         (reference, origins, handler) -> {
           assertEquals(
@@ -100,7 +100,7 @@
   }
 
   @Test
-  public void testDefaultError() throws Exception {
+  public void testDefaultError() {
     assertThrows(
         CompilationFailedException.class,
         () ->
@@ -138,7 +138,7 @@
   }
 
   @Test
-  public void testNonResolvedConflictD8() throws Exception {
+  public void testNonResolvedConflictD8() {
     assertThrows(
         CompilationFailedException.class,
         () ->
@@ -153,7 +153,7 @@
   }
 
   @Test
-  public void testNonResolvedConflictR8() throws Exception {
+  public void testNonResolvedConflictR8() {
     assertThrows(
         CompilationFailedException.class,
         () ->
diff --git a/src/test/java/com/android/tools/r8/ir/PhiDefinitionsTestDump.java b/src/test/java/com/android/tools/r8/ir/PhiDefinitionsTestDump.java
index 0094ad1..e91e71e 100644
--- a/src/test/java/com/android/tools/r8/ir/PhiDefinitionsTestDump.java
+++ b/src/test/java/com/android/tools/r8/ir/PhiDefinitionsTestDump.java
@@ -21,7 +21,7 @@
   // private static String INNER_SIMPLE_NAME = "MethodWriter";
   // static String INNER_INTERNAL_NAME = INTERNAL_NAME + '$' + INNER_SIMPLE_NAME;
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
@@ -474,7 +474,7 @@
     mv.visitEnd();
   }
 
-  public static byte[] dumpInner() throws Exception {
+  public static byte[] dumpInner() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java b/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java
index 48e0c20..7450c5c 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java
@@ -26,37 +26,37 @@
   }
 
   @Test
-  public void testMax() throws Exception {
+  public void testMax() {
     buildAndCheckIR("max", checkAnalysisResult(true));
   }
 
   @Test
-  public void testSget() throws Exception {
+  public void testSget() {
     buildAndCheckIR("sget", checkAnalysisResult(false));
   }
 
   @Test
-  public void testIget() throws Exception {
+  public void testIget() {
     buildAndCheckIR("iget", checkAnalysisResult(false));
   }
 
   @Test
-  public void testAget() throws Exception {
+  public void testAget() {
     buildAndCheckIR("aget", checkAnalysisResult(false));
   }
 
   @Test
-  public void testAlength() throws Exception {
+  public void testAlength() {
     buildAndCheckIR("alength", checkAnalysisResult(false));
   }
 
   @Test
-  public void testCreateInstance() throws Exception {
+  public void testCreateInstance() {
     buildAndCheckIR("createInstance", checkAnalysisResult(false));
   }
 
   @Test
-  public void testCreateArray() throws Exception {
+  public void testCreateArray() {
     buildAndCheckIR("createArray", checkAnalysisResult(false));
   }
 
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java b/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java
index 408e8d1..83f89ad 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java
@@ -50,12 +50,12 @@
   }
 
   @Test
-  public void testEscapeViaReturn() throws Exception {
+  public void testEscapeViaReturn() {
     buildAndCheckIR("escapeViaReturn", checkEscapingName(true, Instruction::isReturn));
   }
 
   @Test
-  public void testEscapeViaThrow() throws Exception {
+  public void testEscapeViaThrow() {
     buildAndCheckIR(
         "escapeViaThrow",
         code -> {
@@ -79,26 +79,26 @@
   }
 
   @Test
-  public void testEscapeViaStaticPut() throws Exception {
+  public void testEscapeViaStaticPut() {
     buildAndCheckIR("escapeViaStaticPut", checkEscapingName(true, Instruction::isStaticPut));
   }
 
   @Test
-  public void testEscapeViaInstancePut_local() throws Exception {
+  public void testEscapeViaInstancePut_local() {
     buildAndCheckIR(
         "escapeViaInstancePut_local",
         checkEscapingName(true, invokesMethodWithName("namingInterfaceConsumer")));
   }
 
   @Test
-  public void testEscapeViaArrayPut_local() throws Exception {
+  public void testEscapeViaArrayPut_local() {
     buildAndCheckIR(
         "escapeViaArrayPut_local",
         checkEscapingName(true, invokesMethodWithName("namingInterfacesConsumer")));
   }
 
   @Test
-  public void testEscapeViaArrayPut_heap() throws Exception {
+  public void testEscapeViaArrayPut_heap() {
     buildAndCheckIR(
         "escapeViaArrayPut_heap",
         checkEscapingName(
@@ -107,7 +107,7 @@
   }
 
   @Test
-  public void testEscapeViaArrayPut_argument() throws Exception {
+  public void testEscapeViaArrayPut_argument() {
     buildAndCheckIR(
         "escapeViaArrayPut_argument",
         checkEscapingName(
@@ -116,44 +116,44 @@
   }
 
   @Test
-  public void testEscapeViaListPut() throws Exception {
+  public void testEscapeViaListPut() {
     buildAndCheckIR(
         "escapeViaListPut",
         checkEscapingName(true, invokesMethodWithName("add")));
   }
 
   @Test
-  public void testEscapeViaListArgumentPut() throws Exception {
+  public void testEscapeViaListArgumentPut() {
     buildAndCheckIR(
         "escapeViaListArgumentPut",
         checkEscapingName(true, invokesMethodWithName("add")));
   }
 
   @Test
-  public void testEscapeViaArrayGet() throws Exception {
+  public void testEscapeViaArrayGet() {
     buildAndCheckIR(
         "escapeViaArrayGet",
         checkEscapingName(true, invokesMethodWithName("namingInterfaceConsumer")));
   }
 
   @Test
-  public void testHandlePhiAndAlias() throws Exception {
+  public void testHandlePhiAndAlias() {
     buildAndCheckIR(
         "handlePhiAndAlias", checkEscapingName(true, invokesMethodWithName("stringConsumer")));
   }
 
   @Test
-  public void testToString() throws Exception {
+  public void testToString() {
     buildAndCheckIR("toString", checkEscapingName(true, Instruction::isReturn));
   }
 
   @Test
-  public void testEscapeViaRecursion() throws Exception {
+  public void testEscapeViaRecursion() {
     buildAndCheckIR("escapeViaRecursion", checkEscapingName(true, Instruction::isReturn));
   }
 
   @Test
-  public void testEscapeViaLoopAndBoxing() throws Exception {
+  public void testEscapeViaLoopAndBoxing() {
     buildAndCheckIR(
         "escapeViaLoopAndBoxing",
         checkEscapingName(
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java
index dd3e853..59af1c8 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java
@@ -48,7 +48,7 @@
   }
 
   @Test
-  public void testJoinOfArraysForPrimitivesSmallerThanInt() throws Exception {
+  public void testJoinOfArraysForPrimitivesSmallerThanInt() {
     buildAndCheckIR(
         "joinOfArraysForPrimitivesSmallerThanInt",
         joinOfArraysForPrimitivesSmallerThanInt());
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java
index 74e2738..4d2f87d 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java
@@ -235,7 +235,7 @@
                         .anyMatch(method -> method.annotation(CRTS_TYPE_NAME).isPresent())));
   }
 
-  private void checkPresenceOfSyntheticMethods(CodeInspector inspector) throws Exception {
+  private void checkPresenceOfSyntheticMethods(CodeInspector inspector) {
     // Get classes A, B, and C.
     ClassSubject clazzA = inspector.clazz(A.class.getCanonicalName());
     assertThat(clazzA, isPresent());
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java
index 1b6d3ef..6525e34 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java
@@ -19,7 +19,7 @@
 // manually changing the name of the CovariantReturnType annotation to
 // "Ldalvik/annotation/codegen/CovariantReturnType;".
 public class BDump implements Opcodes {
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java
index 2838141..6d22985 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java
@@ -22,7 +22,7 @@
 // "Ldalvik/annotation/codegen/CovariantReturnType;" and
 // "Ldalvik/annotation/codegen/CovariantReturnType$CovariantReturnTypes;", respectively.
 public class CDump implements Opcodes {
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/BDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/BDump.java
index 91c16c3..4557b65 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/BDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/BDump.java
@@ -15,7 +15,7 @@
 // Generated by running tools/asmifier.py on build/classes/test/com/android/tools/r8/ir/desugar/
 // annotations/version3/B.class, and removing the subpackage "version3" from all class names.
 public class BDump implements Opcodes {
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/CDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/CDump.java
index 219c3f1..e82e2b6 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/CDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/CDump.java
@@ -15,7 +15,7 @@
 // Generated by running tools/asmifier.py on build/classes/test/com/android/tools/r8/ir/desugar/
 // annotations/version3/C.class, and removing the subpackage "version3" from all class names.
 public class CDump implements Opcodes {
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/ClientDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/ClientDump.java
index 84971e4..5fea864 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/ClientDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version3/ClientDump.java
@@ -15,7 +15,7 @@
 // Generated by running tools/asmifier.py on build/classes/test/com/android/tools/r8/ir/desugar/
 // annotations/version3/Client.class, and removing the subpackage "version3" from all class names.
 public class ClientDump implements Opcodes {
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/canonicalization/IllegalAccessConstClassTestDump.java b/src/test/java/com/android/tools/r8/ir/optimize/canonicalization/IllegalAccessConstClassTestDump.java
index ea11c78..1f18358 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/canonicalization/IllegalAccessConstClassTestDump.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/canonicalization/IllegalAccessConstClassTestDump.java
@@ -18,7 +18,7 @@
   // then repackaged to the top-level.
   static class PackagePrivateClassDump implements Opcodes {
 
-    public static byte[] dump () throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
@@ -65,7 +65,7 @@
   // then rewritten to use the repackaged PackagePrivateClass instead.
   static class FakePackagePrivateClassConsumerDump implements Opcodes {
 
-    public static byte[] dump () throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/classinliner/trivial/ClassWithFinal.java b/src/test/java/com/android/tools/r8/ir/optimize/classinliner/trivial/ClassWithFinal.java
index 2fd1735..d4184d3 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/classinliner/trivial/ClassWithFinal.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/classinliner/trivial/ClassWithFinal.java
@@ -13,7 +13,7 @@
   }
 
   @Override
-  protected void finalize() throws Throwable {
+  protected void finalize() {
     doNothing();
   }
 }
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress134304597/TestDump.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress134304597/TestDump.java
index 1683e4b..bb3ca61 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress134304597/TestDump.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress134304597/TestDump.java
@@ -12,9 +12,8 @@
 
 public class TestDump implements Opcodes {
 
-
   // Generated from Test.java with tools/asmifier.py. Change commented out below
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     FieldVisitor fieldVisitor;
diff --git a/src/test/java/com/android/tools/r8/jasmin/MemberResolutionTest.java b/src/test/java/com/android/tools/r8/jasmin/MemberResolutionTest.java
index aecc306..43a1a07 100644
--- a/src/test/java/com/android/tools/r8/jasmin/MemberResolutionTest.java
+++ b/src/test/java/com/android/tools/r8/jasmin/MemberResolutionTest.java
@@ -588,8 +588,10 @@
     Assert.assertEquals(javaOutput, r8ShakenOutput);
   }
 
-  private void ensureFails(JasminBuilder builder, String main,
-      ThrowingBiFunction<JasminBuilder, String, ProcessResult, Exception> runner) throws Exception {
+  private void ensureFails(
+      JasminBuilder builder,
+      String main,
+      ThrowingBiFunction<JasminBuilder, String, ProcessResult, Exception> runner) {
     ProcessResult result;
     try {
       result = runner.apply(builder, main);
@@ -607,8 +609,7 @@
         (a, m) -> runOnArtR8Raw(a, m, keepMainProguardConfiguration(MAIN_CLASS), null));
   }
 
-  private void ensureException(JasminBuilder app, Class<? extends Throwable> exception)
-      throws Exception {
+  private void ensureException(JasminBuilder app, Class<? extends Throwable> exception) {
     String name = exception.getSimpleName();
     BiConsumer<ThrowingSupplier<ProcessResult, Exception>, CompilerUnderTest> runtest =
         (process, compiler) -> {
diff --git a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
index 0b10725..06892c9 100644
--- a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
+++ b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
@@ -23,7 +23,6 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.concurrent.ExecutionException;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
@@ -142,8 +141,7 @@
     Assert.assertFalse(annotationSubject.isPresent());
   }
 
-  private void checkAnnotationContent(Path inputPath, AndroidApp androidApp)
-      throws IOException, ExecutionException {
+  private void checkAnnotationContent(Path inputPath, AndroidApp androidApp) throws IOException {
     ClassReader classReader = new ClassReader(new FileInputStream(inputPath.toFile()));
     ReadSourceDebugExtensionAttribute sourceDebugExtensionReader =
         new ReadSourceDebugExtensionAttribute(InternalOptions.ASM_VERSION, null);
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnFieldsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnFieldsTest.java
index 5b9341f..8aa593a 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnFieldsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnFieldsTest.java
@@ -145,7 +145,7 @@
           classConstant = A.class,
           fieldAccess = {FieldAccessFlags.PUBLIC})
     })
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       Object o = System.nanoTime() > 0 ? new A() : null;
       for (Field f : o.getClass().getDeclaredFields()) {
         System.out.println(f.getName());
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMembersTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMembersTest.java
index b4cfea4..66ed07b 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMembersTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMembersTest.java
@@ -167,7 +167,7 @@
           classConstant = A.class,
           memberAccess = {MemberAccessFlags.PUBLIC})
     })
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       Object o = System.nanoTime() > 0 ? new A() : null;
       for (Field f : o.getClass().getDeclaredFields()) {
         System.out.println(f.getName());
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMethodsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMethodsTest.java
index 663decd..8e49b23 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAccessFlagsOnMethodsTest.java
@@ -158,7 +158,7 @@
           classConstant = A.class,
           methodAccess = {MethodAccessFlags.PUBLIC})
     })
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       Object o = System.nanoTime() > 0 ? new A() : null;
       for (Method m : o.getClass().getDeclaredMethods()) {
         System.out.println(m.getName());
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java
index b71f282..ac6b939 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java
@@ -195,7 +195,7 @@
           classConstant = MemberRuleTarget.class,
           memberAccess = {MemberAccessFlags.PACKAGE_PRIVATE, MemberAccessFlags.PRIVATE}),
     })
-    void foo() throws Exception {
+    void foo() {
       // Print all non-private fields.
       {
         List<String> nonPrivateFields = new ArrayList<>();
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAnnotationViaSuperTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepAnnotationViaSuperTest.java
index 8bc36a5..cd13701 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAnnotationViaSuperTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAnnotationViaSuperTest.java
@@ -128,7 +128,7 @@
 
   static class TestClass {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       Base b = System.nanoTime() > 0 ? new SubA() : new SubB();
     }
   }
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java
index 330e441..29a6cfa 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java
@@ -89,7 +89,7 @@
   }
 
   static class A {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("A::foo");
     }
 
@@ -99,7 +99,7 @@
   }
 
   static class B {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("B::foo");
     }
 
@@ -109,7 +109,7 @@
   }
 
   static class C {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("C::foo");
     }
 
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java
index 72e264b..9d97e6c 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java
@@ -126,7 +126,7 @@
 
   static class TestClass {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       new A().bar();
       new B().foo();
     }
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java
index a0fcf93..6c50329 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java
@@ -70,7 +70,7 @@
 
   @KeepEdge(consequences = {@KeepTarget(classConstant = A.class)})
   static class A {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("A::foo");
     }
 
@@ -81,7 +81,7 @@
 
   @KeepEdge(consequences = {@KeepTarget(classConstant = B.class)})
   static class B {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("B::foo");
     }
 
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java
index 71e58ea..f231a02 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java
@@ -73,7 +73,7 @@
 
   @KeepEdge(consequences = {@KeepTarget(classConstant = A.class)})
   static class A {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("A::foo");
     }
 
@@ -84,7 +84,7 @@
 
   @KeepEdge(consequences = {@KeepTarget(classConstant = B.class)})
   static class B {
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println("B::foo");
     }
 
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepInvalidForApiTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepInvalidForApiTest.java
index 6cb2ddd..14cb1d1 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepInvalidForApiTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepInvalidForApiTest.java
@@ -61,7 +61,7 @@
   }
 
   @Test
-  public void testInvalidMemberAccess() throws Exception {
+  public void testInvalidMemberAccess() {
     assertThrowsWith(
         () -> extractRuleForClass(RefineMemberAccess.class),
         allOf(
@@ -73,13 +73,13 @@
   static class RefineMemberAccess {
 
     @KeepForApi(memberAccess = {MemberAccessFlags.PUBLIC})
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
 
   @Test
-  public void testInvalidMethodName() throws Exception {
+  public void testInvalidMethodName() {
     assertThrowsWith(
         () -> extractRuleForClass(RefineMethodName.class),
         allOf(
@@ -91,13 +91,13 @@
   static class RefineMethodName {
 
     @KeepForApi(methodName = "foo")
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
 
   @Test
-  public void testInvalidFieldName() throws Exception {
+  public void testInvalidFieldName() {
     assertThrowsWith(
         () -> extractRuleForClass(RefineFieldName.class),
         allOf(
@@ -109,7 +109,7 @@
   static class RefineFieldName {
 
     @KeepForApi(fieldName = "foo")
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepInvalidTargetTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepInvalidTargetTest.java
index a9c7405..f40ca56 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepInvalidTargetTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepInvalidTargetTest.java
@@ -62,7 +62,7 @@
   }
 
   @Test
-  public void testInvalidClassDecl() throws Exception {
+  public void testInvalidClassDecl() {
     assertThrowsWith(
         () -> extractRuleForClass(MultipleClassDeclarations.class),
         allOf(
@@ -74,13 +74,13 @@
   static class MultipleClassDeclarations {
 
     @UsesReflection(@KeepTarget(className = "foo", classConstant = MultipleClassDeclarations.class))
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
 
   @Test
-  public void testInvalidExtendsDecl() throws Exception {
+  public void testInvalidExtendsDecl() {
     assertThrowsWith(
         () -> extractRuleForClass(MultipleExtendsDeclarations.class),
         allOf(
@@ -95,13 +95,13 @@
         @KeepTarget(
             extendsClassName = "foo",
             extendsClassConstant = MultipleClassDeclarations.class))
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
 
   @Test
-  public void testInvalidMemberDecl() throws Exception {
+  public void testInvalidMemberDecl() {
     assertThrowsWith(
         () -> extractRuleForClass(MultipleMemberDeclarations.class),
         allOf(containsString("field"), containsString("method")));
@@ -110,13 +110,13 @@
   static class MultipleMemberDeclarations {
 
     @UsesReflection(@KeepTarget(classConstant = A.class, methodName = "foo", fieldName = "bar"))
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
 
   @Test
-  public void testInvalidOptionsDecl() throws Exception {
+  public void testInvalidOptionsDecl() {
     assertThrowsWith(
         () -> extractRuleForClass(MultipleOptionDeclarations.class),
         allOf(containsString("options"), containsString("allow"), containsString("disallow")));
@@ -129,7 +129,7 @@
             classConstant = A.class,
             allow = {KeepOption.OPTIMIZATION},
             disallow = {KeepOption.SHRINKING}))
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       System.out.println("Hello, world");
     }
   }
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java
index 584aed9..5c680ad 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java
@@ -133,7 +133,7 @@
 
   static class TestClass {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       new A().bar();
       new B().foo();
     }
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java
index 864d59b..6164f5e 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java
@@ -94,7 +94,7 @@
           classConstant = Abs.class,
           methodAccess = {MethodAccessFlags.PUBLIC, MethodAccessFlags.ABSTRACT})
     })
-    void foo() throws Exception {
+    void foo() {
       List<String> sorted = new ArrayList<>();
       for (Method method : Abs.class.getDeclaredMethods()) {
         int modifiers = method.getModifiers();
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java
index f854426..b8c55aa 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java
@@ -94,7 +94,7 @@
             /* the explicit empty set matches all access */
           })
     })
-    void foo() throws Exception {
+    void foo() {
       List<String> sorted = new ArrayList<>();
       for (Method method : Abs.class.getDeclaredMethods()) {
         int modifiers = method.getModifiers();
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java
index fc204d3..59f6d6f 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java
@@ -89,17 +89,17 @@
       consequences = {@KeepTarget(memberFromBinding = "AnyMemberOnA")})
   static class A {
 
-    public void foo() throws Exception {
+    public void foo() {
       System.out.println(new Exception().getStackTrace()[0].getMethodName());
     }
 
     // TODO(b/265892343): There is no backref support for "any params", thus this method is hit by
     //  the extracted rule.
-    public void foo(int unused) throws Exception {
+    public void foo(int unused) {
       System.out.println(new Exception().getStackTrace()[0].getMethodName());
     }
 
-    public void bar() throws Exception {
+    public void bar() {
       System.out.println(new Exception().getStackTrace()[0].getMethodName());
     }
   }
diff --git a/src/test/java/com/android/tools/r8/keepanno/ast/KeepEdgeAstTest.java b/src/test/java/com/android/tools/r8/keepanno/ast/KeepEdgeAstTest.java
index dbe4642..5ffc342 100644
--- a/src/test/java/com/android/tools/r8/keepanno/ast/KeepEdgeAstTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/ast/KeepEdgeAstTest.java
@@ -93,7 +93,7 @@
   }
 
   @Test
-  public void testKeepClass() throws Exception {
+  public void testKeepClass() {
     KeepTarget target = target(classItem(CLASS));
     KeepConsequences consequences = KeepConsequences.builder().addTarget(target).build();
     KeepEdge edge = KeepEdge.builder().setConsequences(consequences).build();
@@ -102,7 +102,7 @@
   }
 
   @Test
-  public void testKeepInitIfReferenced() throws Exception {
+  public void testKeepInitIfReferenced() {
     KeepEdge edge =
         KeepEdge.builder()
             .setPreconditions(
@@ -124,7 +124,7 @@
   }
 
   @Test
-  public void testKeepInstanceIfReferenced() throws Exception {
+  public void testKeepInstanceIfReferenced() {
     KeepEdge edge =
         KeepEdge.builder()
             .setPreconditions(
@@ -140,7 +140,7 @@
   }
 
   @Test
-  public void testKeepInstanceAndInitIfReferenced() throws Exception {
+  public void testKeepInstanceAndInitIfReferenced() {
     KeepEdge edge =
         KeepEdge.builder()
             .setPreconditions(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDependentKeepTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDependentKeepTest.java
index ed3a438..7ecea1e 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDependentKeepTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDependentKeepTest.java
@@ -16,7 +16,6 @@
 import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
 import java.io.IOException;
 import java.util.Collection;
-import java.util.concurrent.ExecutionException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -40,7 +39,7 @@
   }
 
   @Test
-  public void testR8() throws CompilationFailedException, IOException, ExecutionException {
+  public void testR8() throws CompilationFailedException, IOException {
     testForR8(parameters.getBackend())
         .addProgramFiles(kotlinc.getKotlinStdlibJar(), kotlinc.getKotlinAnnotationJar())
         .setMinApi(parameters)
diff --git a/src/test/java/com/android/tools/r8/lightir/LirBasicCallbackTest.java b/src/test/java/com/android/tools/r8/lightir/LirBasicCallbackTest.java
index 59dc2b0..a3b9a1b 100644
--- a/src/test/java/com/android/tools/r8/lightir/LirBasicCallbackTest.java
+++ b/src/test/java/com/android/tools/r8/lightir/LirBasicCallbackTest.java
@@ -33,7 +33,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     DexItemFactory factory = new DexItemFactory();
     DexMethod method = factory.createMethod(Reference.methodFromDescriptor("LFoo;", "bar", "()V"));
     LirCode code =
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
index e68ee8d..0da2423 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
@@ -250,7 +250,7 @@
   }
 
   @Test
-  public void singleEntryNoNewLine() throws Exception {
+  public void singleEntryNoNewLine() {
     DexItemFactory factory = new DexItemFactory();
     Set<DexType> types =
         MainDexListParser.parseList(
diff --git a/src/test/java/com/android/tools/r8/naming/ClassNameMinifierOriginalClassNameTest.java b/src/test/java/com/android/tools/r8/naming/ClassNameMinifierOriginalClassNameTest.java
index a5f2093..6e9067c 100644
--- a/src/test/java/com/android/tools/r8/naming/ClassNameMinifierOriginalClassNameTest.java
+++ b/src/test/java/com/android/tools/r8/naming/ClassNameMinifierOriginalClassNameTest.java
@@ -48,7 +48,7 @@
       memoizeFunction(ClassNameMinifierOriginalClassNameTest::compile);
 
   private static R8TestCompileResult compile(TestParameters parameters)
-      throws CompilationFailedException, IOException, ExecutionException {
+      throws CompilationFailedException, IOException {
     // Adding the obfuscation dictionary just ensures that we assign a name to B that will collide
     // independent of minification scheme.
     Path dictionary = getStaticTemp().newFolder().toPath().resolve("dictionary.txt");
diff --git a/src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java b/src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
index 4489b75..5f85ff6 100644
--- a/src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
+++ b/src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
@@ -352,8 +352,7 @@
   }
 
   private void failingParseAction(
-      Consumer<GenericSignatureParser<String>> parse, String errorMessageType)
-      throws Exception {
+      Consumer<GenericSignatureParser<String>> parse, String errorMessageType) {
     class ThrowsInParserActionBase<E extends Error> extends ReGenerateGenericSignatureRewriter {
       protected Supplier<? extends E> exceptionSupplier;
 
diff --git a/src/test/java/com/android/tools/r8/naming/MappingFileHashTest.java b/src/test/java/com/android/tools/r8/naming/MappingFileHashTest.java
index 23f8605..efc6cf7 100644
--- a/src/test/java/com/android/tools/r8/naming/MappingFileHashTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MappingFileHashTest.java
@@ -45,7 +45,7 @@
     verifyHash(newline, hash);
   }
 
-  private void verifyHash(String newline, String hash) throws Exception {
+  private void verifyHash(String newline, String hash) {
     // Some header info. This should never affect the hash.
     String header =
         String.join(
diff --git a/src/test/java/com/android/tools/r8/naming/MinifierFieldSignatureTest.java b/src/test/java/com/android/tools/r8/naming/MinifierFieldSignatureTest.java
index 7f92b4f..9dc47ba 100644
--- a/src/test/java/com/android/tools/r8/naming/MinifierFieldSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MinifierFieldSignatureTest.java
@@ -77,7 +77,7 @@
   private String aFieldsOfXSignature = "LFields<TX;>;";
   private String aFieldsOfXInnerSignature = "LFields<TX;>.Inner;";
 
-  public byte[] dumpFields(Map<String, String> signatures) throws Exception {
+  public byte[] dumpFields(Map<String, String> signatures) {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
@@ -129,7 +129,7 @@
     return cw.toByteArray();
   }
 
-  public byte[] dumpInner() throws Exception {
+  public byte[] dumpInner() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/naming/MinifierMethodSignatureTest.java b/src/test/java/com/android/tools/r8/naming/MinifierMethodSignatureTest.java
index 9bf0f2e..c4d78d3 100644
--- a/src/test/java/com/android/tools/r8/naming/MinifierMethodSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MinifierMethodSignatureTest.java
@@ -305,7 +305,7 @@
     return cw.toByteArray();
   }
 
-  private byte[] dumpInner() throws Exception {
+  private byte[] dumpInner() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/naming/OverloadUniqueNameTest.java b/src/test/java/com/android/tools/r8/naming/OverloadUniqueNameTest.java
index d7baa95..9cf4ad3 100644
--- a/src/test/java/com/android/tools/r8/naming/OverloadUniqueNameTest.java
+++ b/src/test/java/com/android/tools/r8/naming/OverloadUniqueNameTest.java
@@ -21,7 +21,6 @@
 import java.lang.reflect.Method;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -118,7 +117,7 @@
   }
 
   @Test
-  public void test() throws CompilationFailedException, IOException, ExecutionException {
+  public void test() throws CompilationFailedException, IOException {
     testForR8(Backend.DEX)
         .addProgramClasses(
             A.class, B.class, I1.class, I2.class, C.class, I3.class, I4.class, LambdaTest.class)
@@ -164,7 +163,7 @@
   }
 
   @Test
-  public void testReturnType() throws IOException, CompilationFailedException, ExecutionException {
+  public void testReturnType() throws IOException, CompilationFailedException {
     testForR8(Backend.DEX)
         .addProgramClassFileData(
             transformer(ReturnType.class)
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingMinificationTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingMinificationTest.java
index f4158d2..e6ae679 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingMinificationTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingMinificationTest.java
@@ -87,7 +87,7 @@
 
   @Test
   public void testApplyMappingFollowedByMinification()
-      throws IOException, CompilationFailedException, ExecutionException, NoSuchMethodException {
+      throws IOException, CompilationFailedException, ExecutionException {
     String[] pgMap =
         new String[] {
           A.class.getTypeName() + " -> a:", "  int fieldA -> a", "  void methodA() -> a"
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingRepackagingTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingRepackagingTest.java
index b5745b2..9fe05b4 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingRepackagingTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingRepackagingTest.java
@@ -80,7 +80,7 @@
 
   @Test
   public void testApplyMappingFollowedByMinification()
-      throws IOException, CompilationFailedException, ExecutionException, NoSuchMethodException {
+      throws IOException, CompilationFailedException, ExecutionException {
     String[] pgMap =
         new String[] {
           A.class.getTypeName() + " -> baz:", "  int fieldA -> foo", "  void methodA() -> bar"
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/shared/NoMappingDumps.java b/src/test/java/com/android/tools/r8/naming/applymapping/shared/NoMappingDumps.java
index de0c25e..843eaf1 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/shared/NoMappingDumps.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/shared/NoMappingDumps.java
@@ -23,7 +23,7 @@
   //  }
   public static class HasMappingDump implements Opcodes {
 
-    public static byte[] dump() throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
@@ -91,7 +91,7 @@
   // then renamed bar() to foo() to introduce name clash.
   public static class NoMappingDump implements Opcodes {
 
-    public static byte[] dump() throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
@@ -152,7 +152,7 @@
   //  }
   public static class NoMappingMainDump implements Opcodes {
 
-    public static byte[] dump() throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/shared/ProgramClassDump.java b/src/test/java/com/android/tools/r8/naming/applymapping/shared/ProgramClassDump.java
index d5660cc..0f2b3dd 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/shared/ProgramClassDump.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/shared/ProgramClassDump.java
@@ -32,7 +32,7 @@
 //     void a() -> foo
 public class ProgramClassDump implements Opcodes {
 
-  public static byte[] dump () throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     FieldVisitor fieldVisitor;
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/shared/SwappingDump.java b/src/test/java/com/android/tools/r8/naming/applymapping/shared/SwappingDump.java
index b96c8ef..f34c638 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/shared/SwappingDump.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/shared/SwappingDump.java
@@ -28,7 +28,7 @@
   //  }
   public static class ADump implements Opcodes {
 
-    public static byte[] dump() throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
@@ -108,7 +108,7 @@
   //  }
   public static class BDump implements Opcodes {
 
-    public static byte[] dump() throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
@@ -146,7 +146,7 @@
   // then replaced use of y() with x() to introduce IllegalAccessError.
   public static class MainDump implements Opcodes {
 
-    public static byte[] dump() throws Exception {
+    public static byte[] dump() {
 
       ClassWriter classWriter = new ClassWriter(0);
       MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/naming/overloadaggressively/FieldUpdater.java b/src/test/java/com/android/tools/r8/naming/overloadaggressively/FieldUpdater.java
index 8f5011c..70095d2 100644
--- a/src/test/java/com/android/tools/r8/naming/overloadaggressively/FieldUpdater.java
+++ b/src/test/java/com/android/tools/r8/naming/overloadaggressively/FieldUpdater.java
@@ -9,7 +9,7 @@
 
 public class FieldUpdater {
   @SuppressWarnings("unchecked")
-  public static void main(String[] args) throws Exception {
+  public static void main(String[] args) {
     A a = new A();
     B b = new B();
     AtomicReferenceFieldUpdater f3Updater =
diff --git a/src/test/java/com/android/tools/r8/profile/art/completeness/MovedStaticInterfaceMethodProfileRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/completeness/MovedStaticInterfaceMethodProfileRewritingTest.java
index ec6d1e3..ebf293e 100644
--- a/src/test/java/com/android/tools/r8/profile/art/completeness/MovedStaticInterfaceMethodProfileRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/completeness/MovedStaticInterfaceMethodProfileRewritingTest.java
@@ -132,8 +132,7 @@
   private void inspect(
       ArtProfileInspector profileInspector,
       CodeInspector inspector,
-      boolean canUseDefaultAndStaticInterfaceMethods)
-      throws Exception {
+      boolean canUseDefaultAndStaticInterfaceMethods) {
     if (canUseDefaultAndStaticInterfaceMethods) {
       ClassSubject iClassSubject = inspector.clazz(I.class);
       assertThat(iClassSubject, isPresent());
diff --git a/src/test/java/com/android/tools/r8/proguard/rules/NegatedClassMemberTest.java b/src/test/java/com/android/tools/r8/proguard/rules/NegatedClassMemberTest.java
index 053b36d..bdd9eb8 100644
--- a/src/test/java/com/android/tools/r8/proguard/rules/NegatedClassMemberTest.java
+++ b/src/test/java/com/android/tools/r8/proguard/rules/NegatedClassMemberTest.java
@@ -53,7 +53,7 @@
   }
 
   @Test
-  public void testR8() throws Exception {
+  public void testR8() {
     try {
       testForR8(Backend.DEX)
           .addProgramClasses(
diff --git a/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java b/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java
index bdc1188..04efdac 100644
--- a/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java
+++ b/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java
@@ -161,8 +161,7 @@
     checkNoLocals(code);
   }
 
-  private CodeInspector compile(Class... classes)
-      throws CompilationFailedException, IOException, ExecutionException {
+  private CodeInspector compile(Class... classes) throws CompilationFailedException, IOException {
     return testForD8()
         .addProgramClasses(classes)
         .setMinApi(parameters)
diff --git a/src/test/java/com/android/tools/r8/regress/b111960171/B111960171.java b/src/test/java/com/android/tools/r8/regress/b111960171/B111960171.java
index d05520f..9a689fe 100644
--- a/src/test/java/com/android/tools/r8/regress/b111960171/B111960171.java
+++ b/src/test/java/com/android/tools/r8/regress/b111960171/B111960171.java
@@ -45,7 +45,7 @@
 public class B111960171 {
 
   private MethodSubject compileTestClassAndGetMethod(int apiLevel)
-      throws IOException, CompilationFailedException, ExecutionException {
+      throws IOException, CompilationFailedException {
     AndroidApp app =
         ToolHelper.runD8(
             D8Command.builder()
diff --git a/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java b/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java
index b6f3d94..920bb1d 100644
--- a/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java
+++ b/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java
@@ -96,7 +96,7 @@
 public class B113326860 {
 
   private CodeInspector compileTestClasses(List<Class> classes)
-      throws IOException, CompilationFailedException, ExecutionException {
+      throws IOException, CompilationFailedException {
     D8Command.Builder builder = D8Command.builder().setMode(CompilationMode.RELEASE);
     for (Class c : classes) {
       builder.addClassProgramData(ToolHelper.getClassAsBytes(c), Origin.unknown());
diff --git a/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java b/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java
index 0703498..5cffb1a 100644
--- a/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java
+++ b/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java
@@ -39,7 +39,7 @@
 public class B115552239 {
 
   private MethodSubject compileTestClassAndGetMethod(int apiLevel)
-      throws IOException, CompilationFailedException, ExecutionException {
+      throws IOException, CompilationFailedException {
     AndroidApp app =
         ToolHelper.runD8(
             D8Command.builder()
diff --git a/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java b/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java
index 4da22f8..112f72c 100644
--- a/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java
+++ b/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java
@@ -58,7 +58,7 @@
   }
 
   private MethodSubject getMethodSubject(AndroidApiLevel level)
-      throws CompilationFailedException, IOException, ExecutionException {
+      throws CompilationFailedException, IOException {
     CodeInspector inspector = testForD8()
         .addProgramClasses(TestClass.class)
         .setMinApi(level)
diff --git a/src/test/java/com/android/tools/r8/regress/b147865212/Flaf2Dump.java b/src/test/java/com/android/tools/r8/regress/b147865212/Flaf2Dump.java
index aa2ac6a..6d64706 100644
--- a/src/test/java/com/android/tools/r8/regress/b147865212/Flaf2Dump.java
+++ b/src/test/java/com/android/tools/r8/regress/b147865212/Flaf2Dump.java
@@ -73,7 +73,7 @@
 //            0      25     0     x   I
 public class Flaf2Dump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/regress/b147865212/FlafDump.java b/src/test/java/com/android/tools/r8/regress/b147865212/FlafDump.java
index d0a4f6a..dd2f2a3 100644
--- a/src/test/java/com/android/tools/r8/regress/b147865212/FlafDump.java
+++ b/src/test/java/com/android/tools/r8/regress/b147865212/FlafDump.java
@@ -44,7 +44,7 @@
 //        Start  Length  Slot  Name   Signature
 //            5       1     0     e   Ljava/lang/IllegalStateException;
 public class FlafDump implements Opcodes {
-  public static byte[] dump(boolean generateLineNumberForLocal) throws Exception {
+  public static byte[] dump(boolean generateLineNumberForLocal) {
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
     AnnotationVisitor annotationVisitor0;
diff --git a/src/test/java/com/android/tools/r8/regress/b68378480/B68378480.java b/src/test/java/com/android/tools/r8/regress/b68378480/B68378480.java
index 08252bd..2492b31 100644
--- a/src/test/java/com/android/tools/r8/regress/b68378480/B68378480.java
+++ b/src/test/java/com/android/tools/r8/regress/b68378480/B68378480.java
@@ -48,7 +48,7 @@
 public class B68378480 {
 
   private DexCode compileClassesGetSubClassInit(int minApi)
-      throws IOException, CompilationFailedException, ExecutionException {
+      throws IOException, CompilationFailedException {
     D8Command.Builder builder = D8Command.builder()
         .setMode(CompilationMode.RELEASE)
         .setMinApiLevel(minApi);
diff --git a/src/test/java/com/android/tools/r8/regress/b71520203/Flaf$ADump.java b/src/test/java/com/android/tools/r8/regress/b71520203/Flaf$ADump.java
index 3d6213c..16ae430 100644
--- a/src/test/java/com/android/tools/r8/regress/b71520203/Flaf$ADump.java
+++ b/src/test/java/com/android/tools/r8/regress/b71520203/Flaf$ADump.java
@@ -10,7 +10,7 @@
 
 public class Flaf$ADump implements Opcodes {
 
-  public static byte[] dump () throws Exception {
+  public static byte[] dump() {
     ClassWriter cw = new ClassWriter(0);
     MethodVisitor mv;
 
diff --git a/src/test/java/com/android/tools/r8/regress/b71520203/FlafDump.java b/src/test/java/com/android/tools/r8/regress/b71520203/FlafDump.java
index be8afc4..d105f1a 100644
--- a/src/test/java/com/android/tools/r8/regress/b71520203/FlafDump.java
+++ b/src/test/java/com/android/tools/r8/regress/b71520203/FlafDump.java
@@ -10,7 +10,7 @@
 
 public class FlafDump implements Opcodes {
 
-  public static byte[] dump () throws Exception {
+  public static byte[] dump() {
     ClassWriter cw = new ClassWriter(0);
     MethodVisitor mv;
 
diff --git a/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232.java b/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232.java
index 2bc0dc6..aa38268 100644
--- a/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232.java
+++ b/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232.java
@@ -6,7 +6,6 @@
 import com.android.tools.r8.AsmTestBase;
 import com.android.tools.r8.ByteDataView;
 import com.android.tools.r8.ClassFileConsumer.ArchiveConsumer;
-import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.ToolHelper;
 import java.io.IOException;
 import java.nio.file.Path;
@@ -26,7 +25,7 @@
   }
 
   // Main method to build a test jar for testing on device.
-  public static void main(String[] args) throws CompilationFailedException, IOException {
+  public static void main(String[] args) throws IOException {
     Path output = args.length > 0
         ? Paths.get(args[0])
         : Paths.get("Regress78493232.jar");
diff --git a/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java b/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java
index 1d70128..a704d06 100644
--- a/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java
+++ b/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java
@@ -49,7 +49,7 @@
   }
 
   private MethodSubject getMethodSubject(AndroidApiLevel level)
-      throws CompilationFailedException, IOException, ExecutionException {
+      throws CompilationFailedException, IOException {
     CodeInspector inspector = testForD8()
         .addProgramClasses(TestClass.class)
         .setMinApi(level)
diff --git a/src/test/java/com/android/tools/r8/relocator/RelocatorNoneClassFileTest.java b/src/test/java/com/android/tools/r8/relocator/RelocatorNoneClassFileTest.java
index b83fd6c..f9be82d 100644
--- a/src/test/java/com/android/tools/r8/relocator/RelocatorNoneClassFileTest.java
+++ b/src/test/java/com/android/tools/r8/relocator/RelocatorNoneClassFileTest.java
@@ -9,7 +9,6 @@
 import static junit.framework.TestCase.assertNull;
 
 import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.ResourceException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
@@ -44,8 +43,7 @@
   }
 
   @Test
-  public void testRewritingFiles()
-      throws IOException, CompilationFailedException, ResourceException {
+  public void testRewritingFiles() throws IOException, CompilationFailedException {
     File testJar = temp.newFile("test.jar");
     Path testJarPath = testJar.toPath();
     OpenOption[] options =
diff --git a/src/test/java/com/android/tools/r8/relocator/RelocatorServiceLoaderTest.java b/src/test/java/com/android/tools/r8/relocator/RelocatorServiceLoaderTest.java
index 1cfb51c..7bbe066 100644
--- a/src/test/java/com/android/tools/r8/relocator/RelocatorServiceLoaderTest.java
+++ b/src/test/java/com/android/tools/r8/relocator/RelocatorServiceLoaderTest.java
@@ -9,7 +9,6 @@
 import static junit.framework.TestCase.assertNotNull;
 
 import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.ResourceException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
@@ -51,7 +50,7 @@
 
   @Test
   public void testRewritingOfServicesForNotFoundClasses()
-      throws IOException, CompilationFailedException, ResourceException {
+      throws IOException, CompilationFailedException {
     File testJar = temp.newFile("test.jar");
     Path testJarPath = testJar.toPath();
     OpenOption[] options =
@@ -84,8 +83,7 @@
   }
 
   @Test
-  public void testRewritingService()
-      throws IOException, CompilationFailedException, ResourceException {
+  public void testRewritingService() throws IOException, CompilationFailedException {
     File testJar = temp.newFile("test.jar");
     Path testJarPath = testJar.toPath();
     OpenOption[] options =
@@ -121,8 +119,7 @@
   }
 
   @Test
-  public void testRewritingServiceImpl()
-      throws IOException, CompilationFailedException, ResourceException {
+  public void testRewritingServiceImpl() throws IOException, CompilationFailedException {
     File testJar = temp.newFile("test.jar");
     Path testJarPath = testJar.toPath();
     OpenOption[] options =
diff --git a/src/test/java/com/android/tools/r8/relocator/RelocatorTest.java b/src/test/java/com/android/tools/r8/relocator/RelocatorTest.java
index 08516ec..8fdd6cf 100644
--- a/src/test/java/com/android/tools/r8/relocator/RelocatorTest.java
+++ b/src/test/java/com/android/tools/r8/relocator/RelocatorTest.java
@@ -104,8 +104,7 @@
   }
 
   @Test
-  public void testRelocateKeepsDebugInfo()
-      throws IOException, CompilationFailedException, ExecutionException {
+  public void testRelocateKeepsDebugInfo() throws IOException, CompilationFailedException {
     String originalPrefix = "com.android.tools.r8";
     String newPrefix = "com.android.tools.r8";
     Path output = temp.newFile("output.jar").toPath();
@@ -326,8 +325,7 @@
   }
 
   private void inspectAllClassesRelocated(
-      Path original, Path relocated, String originalPrefix, String newPrefix)
-      throws IOException, ExecutionException {
+      Path original, Path relocated, String originalPrefix, String newPrefix) throws IOException {
     CodeInspector originalInspector = new CodeInspector(original);
     CodeInspector relocatedInspector = new CodeInspector(relocated);
     for (FoundClassSubject clazz : originalInspector.allClasses()) {
@@ -343,7 +341,7 @@
   }
 
   private void inspectAllSignaturesNotContainingString(Path relocated, String originalPrefix)
-      throws IOException, ExecutionException {
+      throws IOException {
     CodeInspector relocatedInspector = new CodeInspector(relocated);
     for (FoundClassSubject clazz : relocatedInspector.allClasses()) {
       assertThat(clazz.getFinalSignatureAttribute(), not(containsString(originalPrefix)));
diff --git a/src/test/java/com/android/tools/r8/resolution/singletarget/one/IrrelevantInterfaceWithDefaultDump.java b/src/test/java/com/android/tools/r8/resolution/singletarget/one/IrrelevantInterfaceWithDefaultDump.java
index 44a4177..7f14805 100644
--- a/src/test/java/com/android/tools/r8/resolution/singletarget/one/IrrelevantInterfaceWithDefaultDump.java
+++ b/src/test/java/com/android/tools/r8/resolution/singletarget/one/IrrelevantInterfaceWithDefaultDump.java
@@ -17,7 +17,7 @@
  */
 public class IrrelevantInterfaceWithDefaultDump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/resolution/singletarget/three/ThirdSubClassTwoDump.java b/src/test/java/com/android/tools/r8/resolution/singletarget/three/ThirdSubClassTwoDump.java
index 80213f5..fd222fc 100644
--- a/src/test/java/com/android/tools/r8/resolution/singletarget/three/ThirdSubClassTwoDump.java
+++ b/src/test/java/com/android/tools/r8/resolution/singletarget/three/ThirdSubClassTwoDump.java
@@ -16,7 +16,7 @@
  */
 public class ThirdSubClassTwoDump implements Opcodes {
 
-  public static byte[] dump() throws Exception {
+  public static byte[] dump() {
 
     ClassWriter cw = new ClassWriter(0);
     FieldVisitor fv;
diff --git a/src/test/java/com/android/tools/r8/resolution/virtualtargets/InvalidResolutionToThisTarget.java b/src/test/java/com/android/tools/r8/resolution/virtualtargets/InvalidResolutionToThisTarget.java
index e06d4be..3f4590c 100644
--- a/src/test/java/com/android/tools/r8/resolution/virtualtargets/InvalidResolutionToThisTarget.java
+++ b/src/test/java/com/android/tools/r8/resolution/virtualtargets/InvalidResolutionToThisTarget.java
@@ -44,7 +44,7 @@
   }
 
   @Test
-  public void testResolution() throws Exception {
+  public void testResolution() {
     assumeTrue(parameters.isOrSimulateNoneRuntime());
     AssertionError foo =
         assertThrows(
@@ -81,7 +81,7 @@
   }
 
   @Test
-  public void testR8() throws IOException, CompilationFailedException, ExecutionException {
+  public void testR8() {
     assertThrows(
         CompilationFailedException.class,
         () ->
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiEmptyTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiEmptyTest.java
index 45df95c..c4489d4 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiEmptyTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiEmptyTest.java
@@ -33,7 +33,7 @@
   public static class RetraceTest implements RetraceApiBinaryTest {
 
     @Test
-    public void testNone() throws Exception {
+    public void testNone() {
       String expected = "hello.World";
       List<RetracedClassReference> retracedClasses = new ArrayList<>();
       Retracer.createDefault(ProguardMapProducer.fromString(""), new DiagnosticsHandler() {})
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionJoinNoMetadataTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionJoinNoMetadataTest.java
index 095eb99..5429547 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionJoinNoMetadataTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionJoinNoMetadataTest.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.retrace.PartitionMappingSupplier;
 import com.android.tools.r8.retrace.Retrace;
 import com.android.tools.r8.retrace.RetraceCommand;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -64,7 +63,7 @@
             " at com.android.google.R8.otherMethod(R8Car.kt:44)");
 
     @Test
-    public void test() throws IOException {
+    public void test() {
       List<String> preFetch = new ArrayList<>();
       PartitionMappingSupplier mappingSupplier =
           PartitionMappingSupplier.noMetadataBuilder(MapVersion.MAP_VERSION_1_0)
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionSerializedObfuscatedKeyTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionSerializedObfuscatedKeyTest.java
index 58b092b..91d8cbb 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionSerializedObfuscatedKeyTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionSerializedObfuscatedKeyTest.java
@@ -10,7 +10,6 @@
 import com.android.tools.r8.retrace.PartitionMappingSupplier;
 import com.android.tools.r8.retrace.Retrace;
 import com.android.tools.r8.retrace.RetraceCommand;
-import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
@@ -42,7 +41,7 @@
     private static final String retracedStackTraceLine = " at com.R8.m(R8.java)";
 
     @Test
-    public void test() throws IOException {
+    public void test() {
       PartitionMappingSupplier mappingSupplier =
           PartitionMappingSupplier.builder()
               .setMetadata(metadata)
diff --git a/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java b/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java
index f1a8c42..839e03e 100644
--- a/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java
@@ -246,7 +246,7 @@
     }
 
     @Override
-    public Object eval(String script) throws ScriptException {
+    public Object eval(String script) {
       return "Engine " + variant + " evaluation of: " + script;
     }
 
diff --git a/src/test/java/com/android/tools/r8/shaking/ClasspathAndProgramSharedSuperTypeTest.java b/src/test/java/com/android/tools/r8/shaking/ClasspathAndProgramSharedSuperTypeTest.java
index 08e88c8..6cf8ee2 100644
--- a/src/test/java/com/android/tools/r8/shaking/ClasspathAndProgramSharedSuperTypeTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ClasspathAndProgramSharedSuperTypeTest.java
@@ -28,7 +28,7 @@
   }
 
   @Test
-  public void testR8() throws Exception {
+  public void testR8() {
     // TODO(b/226054007): R8 should maintain classpath type.
     assertThrows(
         CompilationFailedException.class,
diff --git a/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesTest.java b/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesTest.java
index d1a4966..72b1cb7 100644
--- a/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesTest.java
@@ -153,7 +153,7 @@
   }
 
   @Test
-  public void syntaxError() throws Exception {
+  public void syntaxError() {
     // TODO(b/228319861): Read Proguard rules from AAR's.
     assumeTrue(!libraryType.isAar());
     assertThrows(
@@ -172,7 +172,7 @@
   }
 
   @Test
-  public void includeError() throws Exception {
+  public void includeError() {
     // TODO(b/228319861): Read Proguard rules from AAR's.
     assumeTrue(!libraryType.isAar());
     assertThrows(
@@ -215,7 +215,7 @@
   }
 
   @Test
-  public void throwingDataResourceProvider() throws Exception {
+  public void throwingDataResourceProvider() {
     // TODO(b/228319861): Read Proguard rules from AAR's.
     assumeTrue(!libraryType.isAar());
     assertThrows(
diff --git a/src/test/java/com/android/tools/r8/shaking/UnusedTypeInThrowingTest.java b/src/test/java/com/android/tools/r8/shaking/UnusedTypeInThrowingTest.java
index 7f20b2b..61cd1f7 100644
--- a/src/test/java/com/android/tools/r8/shaking/UnusedTypeInThrowingTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/UnusedTypeInThrowingTest.java
@@ -17,7 +17,7 @@
 
   public static final String EXPECTED = System.currentTimeMillis() >= 0 ? "42" : null;
 
-  public static void main(String[] args) throws UnusedTypeInThrowingThrowable {
+  public static void main(String[] args) {
     System.out.print(EXPECTED);
   }
 }
@@ -31,7 +31,7 @@
 
   @Test
   public void testTypeIsMarkedAsLive()
-      throws IOException, CompilationFailedException, ExecutionException, NoSuchMethodException {
+      throws IOException, CompilationFailedException, ExecutionException {
     CodeInspector inspector =
         testForR8(Backend.CF)
             .enableGraphInspector()
diff --git a/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java b/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java
index d935a00..6b7c1a2 100644
--- a/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java
+++ b/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java
@@ -148,7 +148,7 @@
    )
 
   */
-  public static byte[] classWireField(boolean defaultEnumValueInAnnotation) throws Exception {
+  public static byte[] classWireField(boolean defaultEnumValueInAnnotation) {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -654,7 +654,7 @@
     return classWriter.toByteArray();
   }
 
-  public static byte[] classTest(boolean defaultEnumValueInAnnotation) throws Exception {
+  public static byte[] classTest(boolean defaultEnumValueInAnnotation) {
 
     ClassWriter classWriter = new ClassWriter(0);
     FieldVisitor fieldVisitor;
diff --git a/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/B152492625.java b/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/B152492625.java
index da1e4f1..6362310 100644
--- a/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/B152492625.java
+++ b/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/B152492625.java
@@ -248,7 +248,7 @@
   }
 
   @Test
-  public void testR8AssumeNoSideEffectsNotConditional() throws Exception {
+  public void testR8AssumeNoSideEffectsNotConditional() {
     try {
       testForR8(parameters.getBackend())
           .addProgramClasses(TestClass.class, B.class)
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestClassesAtomicFieldUpdater.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestClassesAtomicFieldUpdater.java
index c9c436a..590b06c 100644
--- a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestClassesAtomicFieldUpdater.java
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestClassesAtomicFieldUpdater.java
@@ -14,7 +14,7 @@
 }
 
 class TestMainWithAtomicFieldUpdater {
-  public static void main(String[] args) throws Exception {
+  public static void main(String[] args) {
     TestClassWithVolatileFields instance = new TestClassWithVolatileFields();
     AtomicIntegerFieldUpdater<TestClassWithVolatileFields> iUpdater =
         AtomicIntegerFieldUpdater.newUpdater(TestClassWithVolatileFields.class, "intField");
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnStaticFinalFieldTest.java b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnStaticFinalFieldTest.java
index a34ef14..63d5746 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnStaticFinalFieldTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnStaticFinalFieldTest.java
@@ -134,7 +134,7 @@
       return objects;
     }
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
       if (System.nanoTime() < 0) {
         // Force evaluation of the conditional rule for the final field type.
         System.out.println(StaticFinalField.class.getTypeName());
diff --git a/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepInterfaceMethodTest.java b/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepInterfaceMethodTest.java
index a725efc..2dc517c 100644
--- a/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepInterfaceMethodTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepInterfaceMethodTest.java
@@ -39,7 +39,7 @@
   }
 
   @Test
-  public void testIProguard() throws CompilationFailedException, IOException, ExecutionException {
+  public void testIProguard() throws CompilationFailedException, IOException {
     testForProguard()
         // TODO(b/159694276): Run the resulting code on runtime.
         .addProgramClasses(I.class)
@@ -52,7 +52,7 @@
   }
 
   @Test
-  public void testIR8() throws CompilationFailedException, IOException, ExecutionException {
+  public void testIR8() throws CompilationFailedException, IOException {
     // TODO(b/159694276): Add compat variant of this.
     testForR8(parameters.getBackend())
         .addProgramClasses(I.class)
diff --git a/src/test/java/com/android/tools/r8/shaking/keepparameternames/KeepParameterNamesUnsortedLocalVariablesTableTest.java b/src/test/java/com/android/tools/r8/shaking/keepparameternames/KeepParameterNamesUnsortedLocalVariablesTableTest.java
index 0b91059..b230cf0 100644
--- a/src/test/java/com/android/tools/r8/shaking/keepparameternames/KeepParameterNamesUnsortedLocalVariablesTableTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/keepparameternames/KeepParameterNamesUnsortedLocalVariablesTableTest.java
@@ -132,7 +132,7 @@
     The order of the local variable table changed to have x before parameter1.
   */
 
-  public static byte[] dumpApi() throws Exception {
+  public static byte[] dumpApi() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/shaking/methods/interfaces/AbstractInterfaceMethodsTest.java b/src/test/java/com/android/tools/r8/shaking/methods/interfaces/AbstractInterfaceMethodsTest.java
index b80e6ec..af34f4b 100644
--- a/src/test/java/com/android/tools/r8/shaking/methods/interfaces/AbstractInterfaceMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/methods/interfaces/AbstractInterfaceMethodsTest.java
@@ -41,8 +41,7 @@
   }
 
   @Test
-  public void testSingleInheritanceProguard()
-      throws CompilationFailedException, IOException, ExecutionException {
+  public void testSingleInheritanceProguard() throws CompilationFailedException, IOException {
     assumeTrue(parameters.isCfRuntime());
     testForProguard()
         .addProgramClasses(I.class, J.class)
diff --git a/src/test/java/com/android/tools/r8/shaking/methods/interfaces/DefaultInterfaceMethodsTest.java b/src/test/java/com/android/tools/r8/shaking/methods/interfaces/DefaultInterfaceMethodsTest.java
index d65c86f..6f27362 100644
--- a/src/test/java/com/android/tools/r8/shaking/methods/interfaces/DefaultInterfaceMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/methods/interfaces/DefaultInterfaceMethodsTest.java
@@ -43,8 +43,7 @@
   }
 
   @Test
-  public void testSingleInheritanceProguard()
-      throws CompilationFailedException, IOException, ExecutionException {
+  public void testSingleInheritanceProguard() throws CompilationFailedException, IOException {
     assumeTrue(parameters.isCfRuntime());
     testForProguard()
         .addProgramClasses(I.class, J.class)
diff --git a/src/test/java/com/android/tools/r8/shaking/negatedrules/NegatedMethodArgumentTest.java b/src/test/java/com/android/tools/r8/shaking/negatedrules/NegatedMethodArgumentTest.java
index b2a2fd5..a7c8fb3 100644
--- a/src/test/java/com/android/tools/r8/shaking/negatedrules/NegatedMethodArgumentTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/negatedrules/NegatedMethodArgumentTest.java
@@ -37,7 +37,7 @@
   private static final String EXPECTED_OUTPUT = StringUtils.lines("Hello, world!");
 
   @Test
-  public void testR8NegatedPrimitive() throws Exception {
+  public void testR8NegatedPrimitive() {
     assertThrows(
         CompilationFailedException.class,
         () ->
@@ -51,7 +51,7 @@
   }
 
   @Test
-  public void testR8NegatedClass() throws Exception {
+  public void testR8NegatedClass() {
     assertThrows(
         CompilationFailedException.class,
         () ->
diff --git a/src/test/java/com/android/tools/r8/shaking/synthetic/KotlinCollectionDump.java b/src/test/java/com/android/tools/r8/shaking/synthetic/KotlinCollectionDump.java
index d104272..136c7ff 100644
--- a/src/test/java/com/android/tools/r8/shaking/synthetic/KotlinCollectionDump.java
+++ b/src/test/java/com/android/tools/r8/shaking/synthetic/KotlinCollectionDump.java
@@ -22,7 +22,7 @@
 // then make bar _synthetic_ as `kotlinc` does.
 class Base implements Opcodes {
 
-  public static byte[] dump () throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
@@ -84,7 +84,7 @@
 //  class Sub extends Base {}
 class Sub implements Opcodes {
 
-  public static byte[] dump () throws Exception {
+  public static byte[] dump() {
 
     ClassWriter classWriter = new ClassWriter(0);
     MethodVisitor methodVisitor;
diff --git a/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java b/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java
index cdc2941..9fd4b01 100644
--- a/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java
+++ b/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java
@@ -315,7 +315,7 @@
     testBuilder.addTest(this::unopMethodBuilder, this::unopMethodChecker, test);
   }
 
-  private void addNegFoldingTest(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addNegFoldingTest(SmaliBuilderWithCheckers testBuilder) {
     addUnopTest(testBuilder, new UnopTestData("int", "neg", 2L, -2L));
     addUnopTest(testBuilder, new UnopTestData("int", "neg", -2L, 2L));
     addUnopTest(testBuilder, new UnopTestData("long", "neg", 2L, -2L));
@@ -601,7 +601,7 @@
     assertTrue(code.instructions[1] instanceof DexReturn);
   }
 
-  private void addNotIntFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addNotIntFoldTests(SmaliBuilderWithCheckers testBuilder) {
     ImmutableList.of(0, 1, 0xff, 0xffffffff, 0xff000000, 0x80000000)
         .forEach(v -> testBuilder.addTest(this::notIntMethodBuilder, this::notIntMethodChecker, v));
   }
@@ -623,8 +623,7 @@
     assertTrue(code.instructions[1] instanceof DexReturnWide);
   }
 
-
-  private void addNotLongFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addNotLongFoldTests(SmaliBuilderWithCheckers testBuilder) {
     ImmutableList.of(
         0L,
         1L,
@@ -653,7 +652,7 @@
     assertTrue(code.instructions[1] instanceof DexReturn);
   }
 
-  private void addNegIntFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addNegIntFoldTests(SmaliBuilderWithCheckers testBuilder) {
     ImmutableList.of(0, 1, 0xff, 0xffffffff, 0xff000000, 0x80000000)
         .forEach(v -> testBuilder.addTest(this::negIntMethodBuilder, this::negIntMethodChecker, v));
   }
@@ -676,7 +675,7 @@
     assertTrue(code.instructions[1] instanceof DexReturnWide);
   }
 
-  private void addNegLongFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addNegLongFoldTests(SmaliBuilderWithCheckers testBuilder) {
     ImmutableList.of(
         0L,
         1L,
@@ -751,7 +750,7 @@
     assertTrue(code.instructions[1] instanceof DexReturn);
   }
 
-  private void addCmpFloatFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addCmpFloatFoldTests(SmaliBuilderWithCheckers testBuilder) {
     float[] testValues = new float[]{
         Float.NEGATIVE_INFINITY,
         -100.0f,
@@ -859,8 +858,7 @@
     assertTrue(code.instructions[1] instanceof DexReturn);
   }
 
-
-  private void addCmpDoubleFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addCmpDoubleFoldTests(SmaliBuilderWithCheckers testBuilder) {
     double[] testValues = new double[]{
         Double.NEGATIVE_INFINITY,
         -100.0f,
@@ -923,7 +921,7 @@
     assertTrue(code.instructions[1] instanceof DexReturn);
   }
 
-  private void addCmpLongFold(SmaliBuilderWithCheckers testBuilder) throws Exception {
+  private void addCmpLongFold(SmaliBuilderWithCheckers testBuilder) {
     ImmutableList.of(
         new long[]{Long.MIN_VALUE, 1L},
         new long[]{Long.MAX_VALUE, 1L},
diff --git a/src/test/java/com/android/tools/r8/synthesis/globals/GlobalSyntheticsTestingConsumer.java b/src/test/java/com/android/tools/r8/synthesis/globals/GlobalSyntheticsTestingConsumer.java
index 51897e6..9f1fdaf 100644
--- a/src/test/java/com/android/tools/r8/synthesis/globals/GlobalSyntheticsTestingConsumer.java
+++ b/src/test/java/com/android/tools/r8/synthesis/globals/GlobalSyntheticsTestingConsumer.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.GlobalSyntheticsConsumer;
 import com.android.tools.r8.GlobalSyntheticsResourceProvider;
-import com.android.tools.r8.ResourceException;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.references.ClassReference;
 import java.io.ByteArrayInputStream;
@@ -89,7 +88,7 @@
     }
 
     @Override
-    public InputStream getByteStream() throws ResourceException {
+    public InputStream getByteStream() {
       return new ByteArrayInputStream(bytes);
     }
   }
diff --git a/src/test/java/com/android/tools/r8/testing/StackTraceTest.java b/src/test/java/com/android/tools/r8/testing/StackTraceTest.java
index 04cfaf8..987572f 100644
--- a/src/test/java/com/android/tools/r8/testing/StackTraceTest.java
+++ b/src/test/java/com/android/tools/r8/testing/StackTraceTest.java
@@ -37,7 +37,7 @@
   }
 
   @Test
-  public void testJvmStackTrace() throws Exception {
+  public void testJvmStackTrace() {
     String stderr =
         StringUtils.join(
             "\n",
diff --git a/src/test/java/com/android/tools/r8/testing/ToolHelperTest.java b/src/test/java/com/android/tools/r8/testing/ToolHelperTest.java
index 2353e6c..0802642 100644
--- a/src/test/java/com/android/tools/r8/testing/ToolHelperTest.java
+++ b/src/test/java/com/android/tools/r8/testing/ToolHelperTest.java
@@ -22,7 +22,7 @@
   }
 
   @Test
-  public void testGetFirstSupportedAndroidJar() throws Exception {
+  public void testGetFirstSupportedAndroidJar() {
     // Check some API levels for which the repo does not have android.jar.
     checkExpectedAndroidJar(
         ToolHelper.getFirstSupportedAndroidJar(AndroidApiLevel.B), AndroidApiLevel.I);
diff --git a/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesMissingReferencesInDexTest.java b/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesMissingReferencesInDexTest.java
index 356bfab..74786ad 100644
--- a/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesMissingReferencesInDexTest.java
+++ b/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesMissingReferencesInDexTest.java
@@ -69,7 +69,7 @@
     }
   }
 
-  private void missingClassReferenced(Path sourceDex) throws Throwable {
+  private void missingClassReferenced(Path sourceDex) {
     DiagnosticsChecker diagnosticsChecker = new DiagnosticsChecker();
     MissingReferencesConsumer consumer = new MissingReferencesConsumer();
 
@@ -111,7 +111,7 @@
             .resolve("classes.dex"));
   }
 
-  private void missingFieldAndMethodReferenced(Path sourceDex) throws Throwable {
+  private void missingFieldAndMethodReferenced(Path sourceDex) {
     DiagnosticsChecker diagnosticsChecker = new DiagnosticsChecker();
     MissingReferencesConsumer consumer = new MissingReferencesConsumer();
 
diff --git a/src/test/java/com/android/tools/r8/utils/AndroidJarPresenceTest.java b/src/test/java/com/android/tools/r8/utils/AndroidJarPresenceTest.java
index e84aaa2..763e086 100644
--- a/src/test/java/com/android/tools/r8/utils/AndroidJarPresenceTest.java
+++ b/src/test/java/com/android/tools/r8/utils/AndroidJarPresenceTest.java
@@ -27,7 +27,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     for (AndroidApiLevel apiLevel : AndroidApiLevel.values()) {
       assertEquals(ToolHelper.shouldHaveAndroidJar(apiLevel), ToolHelper.hasAndroidJar(apiLevel));
     }
diff --git a/src/test/java/com/android/tools/r8/utils/SemanticVersionTests.java b/src/test/java/com/android/tools/r8/utils/SemanticVersionTests.java
index cd30341..0ed9078 100644
--- a/src/test/java/com/android/tools/r8/utils/SemanticVersionTests.java
+++ b/src/test/java/com/android/tools/r8/utils/SemanticVersionTests.java
@@ -27,7 +27,7 @@
   }
 
   @Test
-  public void test() throws Exception {
+  public void test() {
     assertTrue(parse("1.0.1").isNewerOrEqual(parse("1.0.0")));
     assertFalse(parse("1.0.1").isNewerOrEqual(parse("1.1.0")));
     assertTrue(parse("1.1.0").isNewerOrEqual(parse("1.0.1")));
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java
index 7596ee6..0d8f6d0 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java
@@ -265,12 +265,12 @@
   }
 
   @Override
-  public String javap(boolean verbose) throws Exception {
+  public String javap(boolean verbose) {
     throw new Unreachable("Cannot disassembly an absent class");
   }
 
   @Override
-  public String asmify(TemporaryFolder tempFolder, boolean debug) throws Exception {
+  public String asmify(TemporaryFolder tempFolder, boolean debug) {
     throw new Unreachable("Cannot asmify an absent class");
   }
 }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/Main.java b/src/test/java/com/android/tools/r8/utils/codeinspector/Main.java
index 67d3597..220b795 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/Main.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/Main.java
@@ -9,7 +9,6 @@
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import java.util.stream.Collectors;
 
 public class Main {
@@ -20,7 +19,7 @@
       "  and <input> is a series of input files (eg, .class, .dex, .jar, .zip or .apk)"
   );
 
-  public static void main(String[] args) throws IOException, ExecutionException {
+  public static void main(String[] args) throws IOException {
     List<Path> inputs = new ArrayList<>();
     String method = null;
     for (int i = 0; i < args.length; i++) {