FileDocCategorySizeDatePackage
ExceptionTable.javaAPI DocJava SE 5 API7424Fri Aug 26 14:55:16 BST 2005com.sun.org.apache.bcel.internal.classfile

ExceptionTable

public final class ExceptionTable extends Attribute
This class represents the table of exceptions that are thrown by a method. This attribute may be used once per method. The name of this class is ExceptionTable for historical reasons; The Java Virtual Machine Specification, Second Edition defines this attribute using the name Exceptions (which is inconsistent with the other classes).
version
$Id: ExceptionTable.java,v 1.1.1.1 2001/10/29 20:00:00 jvanzyl Exp $
author
M. Dahm
see
Code

Fields Summary
private int
number_of_exceptions
private int[]
exception_index_table
Constructors Summary
public ExceptionTable(ExceptionTable c)
Initialize from another object. Note that both objects use the same references (shallow copy). Use copy() for a physical copy.

    this(c.getNameIndex(), c.getLength(), c.getExceptionIndexTable(),
	 c.getConstantPool());
  
public ExceptionTable(int name_index, int length, int[] exception_index_table, ConstantPool constant_pool)

param
name_index Index in constant pool
param
length Content length in bytes
param
exception_index_table Table of indices in constant pool
param
constant_pool Array of constants

    super(Constants.ATTR_EXCEPTIONS, name_index, length, constant_pool);
    setExceptionIndexTable(exception_index_table);
  
ExceptionTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
Construct object from file stream.

param
name_index Index in constant pool
param
length Content length in bytes
param
file Input stream
param
constant_pool Array of constants
throw
IOException

    this(name_index, length, (int[])null, constant_pool);

    number_of_exceptions  = file.readUnsignedShort();
    exception_index_table = new int[number_of_exceptions];

    for(int i=0; i < number_of_exceptions; i++)
      exception_index_table[i] = file.readUnsignedShort();
  
Methods Summary
public voidaccept(com.sun.org.apache.bcel.internal.classfile.Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.

param
v Visitor object

    v.visitExceptionTable(this);
  
public com.sun.org.apache.bcel.internal.classfile.Attributecopy(com.sun.org.apache.bcel.internal.classfile.ConstantPool constant_pool)

return
deep copy of this attribute

    ExceptionTable c = (ExceptionTable)clone();
    c.exception_index_table = (int[])exception_index_table.clone();
    c.constant_pool = constant_pool;
    return c;
  
public final voiddump(java.io.DataOutputStream file)
Dump exceptions attribute to file stream in binary format.

param
file Output file stream
throw
IOException

    super.dump(file);
    file.writeShort(number_of_exceptions);
    for(int i=0; i < number_of_exceptions; i++)
      file.writeShort(exception_index_table[i]);
  
public final int[]getExceptionIndexTable()

return
Array of indices into constant pool of thrown exceptions.

return exception_index_table;
public final java.lang.String[]getExceptionNames()

return
class names of thrown exceptions

    String[] names = new String[number_of_exceptions];
    for(int i=0; i < number_of_exceptions; i++)
      names[i] = constant_pool.getConstantString(exception_index_table[i],
						 Constants.CONSTANT_Class).
	replace('/", '.");
    return names;
  
public final intgetNumberOfExceptions()

return
Length of exception table.

 return number_of_exceptions; 
public final voidsetExceptionIndexTable(int[] exception_index_table)

param
exception_index_table. Also redefines number_of_exceptions according to table length.

    this.exception_index_table = exception_index_table;
    number_of_exceptions       = (exception_index_table == null)? 0 :
      exception_index_table.length;
  
public final java.lang.StringtoString()

return
String representation, i.e., a list of thrown exceptions.

    StringBuffer buf = new StringBuffer("");
    String       str;

    for(int i=0; i < number_of_exceptions; i++) {
      str = constant_pool.getConstantString(exception_index_table[i],
					    Constants.CONSTANT_Class);
      buf.append(Utility.compactClassName(str, false));

      if(i < number_of_exceptions - 1)
	buf.append(", ");
    }

    return buf.toString();