Enum Class LocalSplitter.ExceptionalFlow

java.lang.Object
java.lang.Enum<LocalSplitter.ExceptionalFlow>
sootup.interceptors.LocalSplitter.ExceptionalFlow
All Implemented Interfaces:
Serializable, Comparable<LocalSplitter.ExceptionalFlow>, Constable
Enclosing class:
LocalSplitter

public static enum LocalSplitter.ExceptionalFlow extends Enum<LocalSplitter.ExceptionalFlow>
Which Stmts can enter an exception handler. A Stmt that throws does not complete, so the handler sees the value a local had before that Stmt; a Stmt that cannot enter the handler must not carry its value there, or definitions whose values never reach the same read are merged into one local, e.g. an int and a String kept in the same register.

Each mode lets more Stmts enter handlers than the one before it, so the walk from each definition follows more exceptional edges and visits more Stmts. VIRTUAL_MACHINE_ERRORS also looks up the superclasses of each handler type. Choose the narrowest mode that is right for the platform the code runs on.

  • Enum Constant Details

    • SYNCHRONOUS

      public static final LocalSplitter.ExceptionalFlow SYNCHRONOUS
      Only Stmts that can throw. Right where no asynchronous exceptions exist, as on ART: its verifier merges only throwing instructions into handlers, and it does not support Thread.stop.
    • VIRTUAL_MACHINE_ERRORS

      public static final LocalSplitter.ExceptionalFlow VIRTUAL_MACHINE_ERRORS
      In addition, every Stmt into handlers that can catch a VirtualMachineError, which the JVM may throw at any point (JLS 11.1.3): handlers of Throwable, Error, VirtualMachineError, catch-alls, and subclasses of VirtualMachineError.
    • ANY

      public static final LocalSplitter.ExceptionalFlow ANY
      Every Stmt into every handler, e.g. for exceptions a debugger injects into a thread, or Thread.stop(Throwable) on Java 7 and older.
  • Method Details

    • values

      public static LocalSplitter.ExceptionalFlow[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static LocalSplitter.ExceptionalFlow valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null