Package org.apache.bcel.classfile
Class CodeException
- java.lang.Object
-
- org.apache.bcel.classfile.CodeException
-
public final class CodeException extends java.lang.Object implements java.lang.Cloneable, Node, Constants
This class represents an entry in the exception table of the Code attribute and is used only there. It contains a range in which a particular exception handler is active.Code_attribute { u2 attribute_name_index; u4 attribute_length; u2 max_stack; u2 max_locals; u4 code_length; u1 code[code_length]; u2 exception_table_length; { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]; }- See Also:
Code
-
-
Field Summary
Fields Modifier and Type Field Description private intcatchType(package private) static CodeException[]EMPTY_ARRAYEmpty array.private intendPcActive.private inthandlerPcStarting address of exception handler, that is, an offset from start of code.private intstartPcRange in the code the exception handler.-
Fields inherited from interface org.apache.bcel.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
-
-
Constructor Summary
Constructors Constructor Description CodeException(int startPc, int endPc, int handlerPc, int catchType)Constructs a new instance.CodeException(java.io.DataInput file)Constructs a new instance from a DataInput.CodeException(CodeException c)Constructs a new instance from another instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Visitor v)Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.CodeExceptioncopy()Creates a deep copy of this object.voiddump(java.io.DataOutputStream file)Dumps code exception to file stream in binary format.intgetCatchType()Gets the type of exception that is caught.intgetEndPC()Gets the exclusive end index of the region where the handler is active.intgetHandlerPC()Gets the starting address of exception handler, relative to the code.intgetStartPC()Gets the inclusive start index of the region where the handler is active.voidsetCatchType(int catchType)Sets the type of exception that is caught.voidsetEndPC(int endPc)Sets the end of handled block.voidsetHandlerPC(int handlerPc)Sets where the actual code is.voidsetStartPC(int startPc)Sets the start of handled block.java.lang.StringtoString()Gets a string representation.java.lang.StringtoString(ConstantPool cp)Gets a string representation with constant pool.java.lang.StringtoString(ConstantPool cp, boolean verbose)Gets a string representation with constant pool.
-
-
-
Field Detail
-
EMPTY_ARRAY
static final CodeException[] EMPTY_ARRAY
Empty array.
-
startPc
private int startPc
Range in the code the exception handler.
-
endPc
private int endPc
Active. startPc is inclusive, endPc exclusive.
-
handlerPc
private int handlerPc
Starting address of exception handler, that is, an offset from start of code.
-
catchType
private int catchType
-
-
Constructor Detail
-
CodeException
public CodeException(CodeException c)
Constructs a new instance from another instance.- Parameters:
c- Source for copying.
-
CodeException
CodeException(java.io.DataInput file) throws java.io.IOExceptionConstructs a new instance from a DataInput.- Parameters:
file- Input stream.- Throws:
java.io.IOException- if an I/O error occurs.
-
CodeException
public CodeException(int startPc, int endPc, int handlerPc, int catchType)Constructs a new instance.- Parameters:
startPc- Range in the code the exception handler is active, startPc is inclusive while.endPc- is exclusive.handlerPc- Starting address of exception handler, that is, an offset from start of code.catchType- If zero the handler catches any exception, otherwise it points to the exception class which is to be caught.
-
-
Method Detail
-
accept
public void accept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
-
copy
public CodeException copy()
Creates a deep copy of this object.- Returns:
- deep copy of this object.
-
dump
public void dump(java.io.DataOutputStream file) throws java.io.IOExceptionDumps code exception to file stream in binary format.- Parameters:
file- Output file stream.- Throws:
java.io.IOException- if an I/O error occurs.
-
getCatchType
public int getCatchType()
Gets the type of exception that is caught.- Returns:
- 0, if the handler catches any exception, otherwise it points to the exception class which is to be caught.
-
getEndPC
public int getEndPC()
Gets the exclusive end index of the region where the handler is active.- Returns:
- Exclusive end index of the region where the handler is active.
-
getHandlerPC
public int getHandlerPC()
Gets the starting address of exception handler, relative to the code.- Returns:
- Starting address of exception handler, relative to the code.
-
getStartPC
public int getStartPC()
Gets the inclusive start index of the region where the handler is active.- Returns:
- Inclusive start index of the region where the handler is active.
-
setCatchType
public void setCatchType(int catchType)
Sets the type of exception that is caught.- Parameters:
catchType- the type of exception that is caught.
-
setEndPC
public void setEndPC(int endPc)
Sets the end of handled block.- Parameters:
endPc- end of handled block.
-
setHandlerPC
public void setHandlerPC(int handlerPc)
Sets where the actual code is.- Parameters:
handlerPc- where the actual code is.
-
setStartPC
public void setStartPC(int startPc)
Sets the start of handled block.- Parameters:
startPc- start of handled block.
-
toString
public java.lang.String toString()
Gets a string representation.- Overrides:
toStringin classjava.lang.Object- Returns:
- String representation.
-
toString
public java.lang.String toString(ConstantPool cp)
Gets a string representation with constant pool.- Parameters:
cp- constant pool source.- Returns:
- String representation.
-
toString
public java.lang.String toString(ConstantPool cp, boolean verbose)
Gets a string representation with constant pool.- Parameters:
cp- constant pool source.verbose- Output more if true.- Returns:
- String representation.
-
-