com.vladium.jcd.cls.attribute
Class Exception_info

java.lang.Object
  extended by com.vladium.jcd.cls.attribute.Exception_info
All Implemented Interfaces:
IClassFormatOutput, java.lang.Cloneable

public final class Exception_info
extends java.lang.Object
implements java.lang.Cloneable, IClassFormatOutput

An Exception_info is an entry layout format for ExceptionHandlerTable. Each entry contains the following items:

    start_pc, end_pc 
 
The values of the two items start_pc and end_pc indicate the ranges in the code array at which the exception handler is active. The value of start_pc must be a valid index into the code array of the opcode of an instruction. The value of end_pc either must be a valid index into the code array of the opcode of an instruction, or must be equal to code_length , the length of the code array. The value of start_pc must be less than the value of end_pc.

The start_pc is inclusive and end_pc is exclusive; that is, the exception handler must be active while the program counter is within the interval [start_pc, end_pc).

    handler_pc 
 
The value of the handler_pc item indicates the start of the exception handler. The value of the item must be a valid index into the code array, must be the index of the opcode of an instruction, and must be less than the value of the code_length item.
    catch_type
 
If the value of the catch_type item is nonzero, it must be a valid index into the constant_pool table. The constant_pool entry at that index must be a CONSTANT_Class_info structure representing a class of exceptions that this exception handler is designated to catch. This class must be the class Throwable or one of its subclasses. The exception handler will be called only if the thrown exception is an instance of the given class or one of its subclasses.

If the value of the catch_type item is zero, this exception handler is called for all exceptions. This is used to implement finally.

Author:
(C) 2001, Vlad Roubtsov

Field Summary
 int m_catch_type
           
 int m_end_pc
           
 int m_handler_pc
           
 int m_start_pc
           
 
Constructor Summary
Exception_info(int start_pc, int end_pc, int handler_pc, int catch_type)
           
Exception_info(UDataInputStream bytes)
           
 
Method Summary
 java.lang.Object clone()
          Performs a deep copy.
 java.lang.String toString()
           
 void writeInClassFormat(UDataOutputStream out)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_start_pc

public int m_start_pc

m_end_pc

public int m_end_pc

m_handler_pc

public int m_handler_pc

m_catch_type

public int m_catch_type
Constructor Detail

Exception_info

public Exception_info(int start_pc,
                      int end_pc,
                      int handler_pc,
                      int catch_type)

Exception_info

Exception_info(UDataInputStream bytes)
         throws java.io.IOException
Throws:
java.io.IOException
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

clone

public java.lang.Object clone()
Performs a deep copy.

Overrides:
clone in class java.lang.Object

writeInClassFormat

public void writeInClassFormat(UDataOutputStream out)
                        throws java.io.IOException
Specified by:
writeInClassFormat in interface IClassFormatOutput
Throws:
java.io.IOException