< prev index next >
src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/TargetLostException.java
Print this page
*** 19,67 ****
* limitations under the License.
*/
package com.sun.org.apache.bcel.internal.generic;
-
/**
! * 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:
*
* <PRE>
* ...
* 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);
* }
* }
* </PRE>
*
* @see InstructionHandle
* @see InstructionList
* @see InstructionTargeter
! * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
*/
public final class TargetLostException extends Exception {
- private InstructionHandle[] targets;
! TargetLostException(InstructionHandle[] t, String mesg) {
super(mesg);
targets = t;
}
/**
* @return list of instructions still being targeted.
*/
! public InstructionHandle[] getTargets() { return targets; }
}
--- 19,70 ----
* limitations under the License.
*/
package com.sun.org.apache.bcel.internal.generic;
/**
! * 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.
*
! * <p>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:</p>
*
* <PRE>
* ...
* 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);
! * }
* }
* }
* </PRE>
*
* @see InstructionHandle
* @see InstructionList
* @see InstructionTargeter
! * @version $Id: TargetLostException.java 1747278 2016-06-07 17:28:43Z britter $
*/
public final class TargetLostException extends Exception {
! private static final long serialVersionUID = -6857272667645328384L;
! private final InstructionHandle[] targets;
!
!
! TargetLostException(final InstructionHandle[] t, final String mesg) {
super(mesg);
targets = t;
}
+
/**
* @return list of instructions still being targeted.
*/
! public InstructionHandle[] getTargets() {
! return targets;
! }
}
< prev index next >