org.apache.bcel.generic

Class CodeExceptionGen

public final class CodeExceptionGen extends Object implements InstructionTargeter, Cloneable, Serializable

This class represents an exception handler, i.e., specifies the region where a handler is active and an instruction where the actual handling is done. pool as parameters. Opposed to the JVM specification the end of the handled region is set to be inclusive, i.e. all instructions between start and end are protected including the start and end instructions (handles) themselves. The end of the region is automatically mapped to be exclusive when calling getCodeException(), i.e., there is no difference semantically.

See Also: MethodGen CodeException InstructionHandle

Constructor Summary
CodeExceptionGen(InstructionHandle start_pc, InstructionHandle end_pc, InstructionHandle handler_pc, ObjectType catch_type)
Add an exception handler, i.e., specify region where a handler is active and an instruction where the actual handling is done.
Method Summary
Objectclone()
booleancontainsTarget(InstructionHandle ih)
ObjectTypegetCatchType()
Gets the type of the Exception to catch, 'null' for ANY.
CodeExceptiongetCodeException(ConstantPoolGen cp)
Get CodeException object.
This relies on that the instruction list has already been dumped to byte code or or that the `setPositions' methods has been called for the instruction list.
InstructionHandlegetEndPC()
InstructionHandlegetHandlerPC()
InstructionHandlegetStartPC()
voidsetCatchType(ObjectType catch_type)
Sets the type of the Exception to catch.
voidsetEndPC(InstructionHandle end_pc)
voidsetHandlerPC(InstructionHandle handler_pc)
voidsetStartPC(InstructionHandle start_pc)
StringtoString()
voidupdateTarget(InstructionHandle old_ih, InstructionHandle new_ih)

Constructor Detail

CodeExceptionGen

public CodeExceptionGen(InstructionHandle start_pc, InstructionHandle end_pc, InstructionHandle handler_pc, ObjectType catch_type)
Add an exception handler, i.e., specify region where a handler is active and an instruction where the actual handling is done.

Parameters: start_pc Start of handled region (inclusive) end_pc End of handled region (inclusive) handler_pc Where handling is done catch_type which exception is handled, null for ANY

Method Detail

clone

public Object clone()

containsTarget

public boolean containsTarget(InstructionHandle ih)

Returns: true, if ih is target of this handler

getCatchType

public ObjectType getCatchType()
Gets the type of the Exception to catch, 'null' for ANY.

getCodeException

public CodeException getCodeException(ConstantPoolGen cp)
Get CodeException object.
This relies on that the instruction list has already been dumped to byte code or or that the `setPositions' methods has been called for the instruction list.

Parameters: cp constant pool

getEndPC

public InstructionHandle getEndPC()

Returns: end of handled region (inclusive)

getHandlerPC

public InstructionHandle getHandlerPC()

Returns: start of handler

getStartPC

public InstructionHandle getStartPC()

Returns: start of handled region (inclusive)

setCatchType

public void setCatchType(ObjectType catch_type)
Sets the type of the Exception to catch. Set 'null' for ANY.

setEndPC

public void setEndPC(InstructionHandle end_pc)

setHandlerPC

public void setHandlerPC(InstructionHandle handler_pc)

setStartPC

public void setStartPC(InstructionHandle start_pc)

toString

public String toString()

updateTarget

public void updateTarget(InstructionHandle old_ih, InstructionHandle new_ih)

Parameters: old_ih old target, either start or end new_ih new target