Package org.apache.bcel.generic
Class CodeExceptionGen
- java.lang.Object
-
- org.apache.bcel.generic.CodeExceptionGen
-
- All Implemented Interfaces:
java.lang.Cloneable
,InstructionTargeter
public final class CodeExceptionGen extends java.lang.Object implements InstructionTargeter, java.lang.Cloneable
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
-
-
Field Summary
Fields Modifier and Type Field Description private ObjectType
catchType
(package private) static CodeExceptionGen[]
EMPTY_ARRAY
private InstructionHandle
endPc
private InstructionHandle
handlerPc
private InstructionHandle
startPc
-
Constructor Summary
Constructors Constructor Description CodeExceptionGen(InstructionHandle startPc, InstructionHandle endPc, InstructionHandle handlerPc, ObjectType catchType)
Add an exception handler, i.e., specify region where a handler is active and an instruction where the actual handling is done.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
boolean
containsTarget(InstructionHandle ih)
Checks whether this targeter targets the specified instruction handle.ObjectType
getCatchType()
Gets the type of the Exception to catch, 'null' for ANY.CodeException
getCodeException(ConstantPoolGen cp)
Get CodeException object.
This relies on that the instruction list has already been dumped to byte code or that the 'setPositions' methods has been called for the instruction list.InstructionHandle
getEndPC()
InstructionHandle
getHandlerPC()
InstructionHandle
getStartPC()
void
setCatchType(ObjectType catchType)
Sets the type of the Exception to catch.void
setEndPC(InstructionHandle endPc)
void
setHandlerPC(InstructionHandle handlerPc)
void
setStartPC(InstructionHandle startPc)
java.lang.String
toString()
void
updateTarget(InstructionHandle oldIh, InstructionHandle newIh)
Replaces the target of this targeter from this old handle to the new handle.
-
-
-
Field Detail
-
EMPTY_ARRAY
static final CodeExceptionGen[] EMPTY_ARRAY
-
startPc
private InstructionHandle startPc
-
endPc
private InstructionHandle endPc
-
handlerPc
private InstructionHandle handlerPc
-
catchType
private ObjectType catchType
-
-
Constructor Detail
-
CodeExceptionGen
public CodeExceptionGen(InstructionHandle startPc, InstructionHandle endPc, InstructionHandle handlerPc, ObjectType catchType)
Add an exception handler, i.e., specify region where a handler is active and an instruction where the actual handling is done.- Parameters:
startPc
- Start of handled region (inclusive)endPc
- End of handled region (inclusive)handlerPc
- Where handling is donecatchType
- which exception is handled, null for ANY
-
-
Method Detail
-
clone
public java.lang.Object clone()
- Overrides:
clone
in classjava.lang.Object
-
containsTarget
public boolean containsTarget(InstructionHandle ih)
Description copied from interface:InstructionTargeter
Checks whether this targeter targets the specified instruction handle.- Specified by:
containsTarget
in interfaceInstructionTargeter
- 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 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 catchType)
Sets the type of the Exception to catch. Set 'null' for ANY.
-
setEndPC
public void setEndPC(InstructionHandle endPc)
-
setHandlerPC
public void setHandlerPC(InstructionHandle handlerPc)
-
setStartPC
public void setStartPC(InstructionHandle startPc)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
updateTarget
public void updateTarget(InstructionHandle oldIh, InstructionHandle newIh)
Description copied from interface:InstructionTargeter
Replaces the target of this targeter from this old handle to the new handle.- Specified by:
updateTarget
in interfaceInstructionTargeter
- Parameters:
oldIh
- old target, either start or endnewIh
- new target
-
-