| // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | package classmerging; | 
 |  | 
 | public class ExceptionTest { | 
 |   public static void main(String[] args) { | 
 |     // The following will lead to a catch handler for ExceptionA, which is merged into ExceptionB. | 
 |     try { | 
 |       doSomethingThatMightThrowExceptionB(); | 
 |       doSomethingThatMightThrowException2(); | 
 |     } catch (ExceptionB exception) { | 
 |       System.out.println("Caught exception: " + exception.getMessage()); | 
 |     } catch (ExceptionA exception) { | 
 |       System.out.println("Caught exception: " + exception.getMessage()); | 
 |     } catch (Exception2 exception) { | 
 |       System.out.println("Caught exception: " + exception.getMessage()); | 
 |     } catch (Exception1 exception) { | 
 |       System.out.println("Caught exception: " + exception.getMessage()); | 
 |     } | 
 |   } | 
 |  | 
 |   private static void doSomethingThatMightThrowExceptionB() throws ExceptionB { | 
 |     throw new ExceptionB("Ouch!"); | 
 |   } | 
 |  | 
 |   private static void doSomethingThatMightThrowException2() throws Exception2 { | 
 |     throw new Exception2("Ouch!"); | 
 |   } | 
 |  | 
 |   // Will be merged into ExceptionB when class merging is enabled. | 
 |   public static class ExceptionA extends Exception { | 
 |     public ExceptionA(String message) { | 
 |       super(message); | 
 |     } | 
 |   } | 
 |  | 
 |   public static class ExceptionB extends ExceptionA { | 
 |     public ExceptionB(String message) { | 
 |       super(message); | 
 |     } | 
 |   } | 
 |  | 
 |   public static class Exception1 extends Exception { | 
 |     public Exception1(String message) { | 
 |       super(message); | 
 |     } | 
 |   } | 
 |  | 
 |   public static class Exception2 extends Exception1 { | 
 |     public Exception2(String message) { | 
 |       super(message); | 
 |     } | 
 |   } | 
 | } |