Package org.apache.bcel.generic

# Class TargetLostException

java.lang.Object
java.lang.Throwable
java.lang.Exception
org.apache.bcel.generic.TargetLostException

All Implemented Interfaces:
  `Serializable`

public final class TargetLostException extends Exception
Thrown by InstructionList.remove() when one or multiple disposed instructions are still being referenced by an InstructionTargeter object. I.e. the InstructionTargeter has to be notified that (one of) the InstructionHandle it is referencing is being removed from the InstructionList and thus not valid anymore.

Making this an exception instead of a return value forces the user to handle these case explicitly in a try { ... } catch. The following code illustrates how this may be done:

         ...
         try {
             il.delete(start_ih, end_ih);
         } catch (TargetLostException e) {
             for (InstructionHandle target : e.getTargets()) {
                 for (InstructionTargeter targeter : target.getTargeters()) {
                     targeter.updateTarget(target, new_target);
                 }
             }
         }

See Also:
  - `InstructionHandle`
  - `InstructionList`
  - `InstructionTargeter`
  - Serialized Form

- ## Method Summary

  Modifier and Type
  Method
  Description
  `InstructionHandle[]`
  `getTargets()`

  ### Methods inherited from class java.lang.Throwable

  `addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Method Details

  - ### getTargets

    public InstructionHandle[] getTargets()
    Returns:
      list of instructions still being targeted.