Package edu.umd.cs.findbugs.ba
Class ExceptionHandlerMap
java.lang.Object
edu.umd.cs.findbugs.ba.ExceptionHandlerMap
This class provides a convenient way of determining the exception handlers
for instructions in a method. Essentially, it's a a map of InstructionHandles
to lists of CodeExceptionGen objects. This class also maps instructions which
are the start of exception handlers to the CodeExceptionGen object
representing the handler.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final IdentityHashMap
<org.apache.bcel.generic.InstructionHandle, List<org.apache.bcel.generic.CodeExceptionGen>> private final TypeMerger
private final IdentityHashMap
<org.apache.bcel.generic.InstructionHandle, org.apache.bcel.generic.CodeExceptionGen> -
Constructor Summary
ConstructorsConstructorDescriptionExceptionHandlerMap
(org.apache.bcel.generic.MethodGen methodGen, TypeMerger merger) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addExceptionHandler
(org.apache.bcel.generic.CodeExceptionGen exceptionHandler) private void
addHandler
(org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.CodeExceptionGen exceptionHandler) private void
build
(org.apache.bcel.generic.MethodGen methodGen) org.apache.bcel.generic.CodeExceptionGen
getHandlerForStartInstruction
(org.apache.bcel.generic.InstructionHandle start) If the given instruction is the start of an exception handler, get the CodeExceptionGen object representing the handler.List
<org.apache.bcel.generic.CodeExceptionGen> getHandlerList
(org.apache.bcel.generic.InstructionHandle handle) Get the list of exception handlers (CodeExceptionGen objects) which are specified to handle exceptions for the instruction whose handle is given.static org.apache.bcel.generic.CodeExceptionGen
merge
(TypeMerger m, org.apache.bcel.generic.CodeExceptionGen e1, org.apache.bcel.generic.CodeExceptionGen e2)
-
Field Details
-
codeToHandlerMap
private final IdentityHashMap<org.apache.bcel.generic.InstructionHandle,List<org.apache.bcel.generic.CodeExceptionGen>> codeToHandlerMap -
startInstructionToHandlerMap
private final IdentityHashMap<org.apache.bcel.generic.InstructionHandle,org.apache.bcel.generic.CodeExceptionGen> startInstructionToHandlerMap -
merger
-
-
Constructor Details
-
ExceptionHandlerMap
Constructor.- Parameters:
methodGen
- the method to build the map for
-
-
Method Details
-
getHandlerList
public List<org.apache.bcel.generic.CodeExceptionGen> getHandlerList(org.apache.bcel.generic.InstructionHandle handle) Get the list of exception handlers (CodeExceptionGen objects) which are specified to handle exceptions for the instruction whose handle is given. Note that the handlers in the returned list are in order of priority, as defined in the method's exception handler table.- Parameters:
handle
- the handle of the instruction we want the exception handlers for- Returns:
- the list of exception handlers, or null if there are no handlers registered for the instruction
-
getHandlerForStartInstruction
public org.apache.bcel.generic.CodeExceptionGen getHandlerForStartInstruction(org.apache.bcel.generic.InstructionHandle start) If the given instruction is the start of an exception handler, get the CodeExceptionGen object representing the handler.- Parameters:
start
- the instruction- Returns:
- the CodeExceptionGen object, or null if the instruction is not the start of an exception handler
-
build
private void build(org.apache.bcel.generic.MethodGen methodGen) -
merge
public static org.apache.bcel.generic.CodeExceptionGen merge(@CheckForNull TypeMerger m, org.apache.bcel.generic.CodeExceptionGen e1, org.apache.bcel.generic.CodeExceptionGen e2) -
addExceptionHandler
private void addExceptionHandler(org.apache.bcel.generic.CodeExceptionGen exceptionHandler) -
addHandler
private void addHandler(org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.CodeExceptionGen exceptionHandler)
-