< 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 >