org.apache.bcel.generic

Class TargetLostException

public final class TargetLostException extends Exception

Thrown by InstructionList.remove() when one or multiple disposed instruction are still being referenced by a 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 explicitely in a try { ... } catch. The following code illustrates how this may be done:
     ...
     try {
	il.delete(start_ih, end_ih);
     } catch(TargetLostException e) {
       InstructionHandle[] targets = e.getTargets();
	 for(int i=0; i < targets.length; i++) {
	   InstructionTargeter[] targeters = targets[i].getTargeters();
     
	   for(int j=0; j < targeters.length; j++)
	     targeters[j].updateTarget(targets[i], new_target);
       }
     }
 

Version: $Id: TargetLostException.java 386056 2006-03-15 11:31:56Z tcurdt $

Author: M. Dahm

See Also: InstructionHandle InstructionList InstructionTargeter

Field Summary
InstructionHandle[]targets
Constructor Summary
TargetLostException(InstructionHandle[] t, String mesg)
Method Summary
InstructionHandle[]getTargets()

Field Detail

targets

private InstructionHandle[] targets

Constructor Detail

TargetLostException

TargetLostException(InstructionHandle[] t, String mesg)

Method Detail

getTargets

public InstructionHandle[] getTargets()

Returns: list of instructions still being targeted.