/** * This is used to make a table of catch handlers for a method. * @author $Author: jonmeyerny $ * @version $Revision: 1.1 $ */ package jas; import java.io.*; import java.util.*; public class Catchtable { Vector entries; public Catchtable() { entries = new Vector(); } /** * add an entry to the catch table */ public void addEntry(CatchEntry entry) { entries.addElement(entry); } /** * add an entry to the catch table * @param start Label marking the beginning of the area * where the catch table is active. * @param end Label marking the end of the area where the * table is active. * @param handler Label marking the entrypoint into the * exception handling routine. * @param cat (usually a classCP) informing the VM to direct * any exceptions of this (or its subclasses) to the handler. */ public void addEntry(Label start, Label end, Label handler, CP cat) { addEntry(new CatchEntry(start, end, handler, cat)); } public void addEntry(int start, int end, int handler, CP cat) { addEntry(new CatchEntry(start, end, handler, cat)); } void resolve(ClassEnv e) { for (Enumeration en=entries.elements(); en.hasMoreElements(); ) { CatchEntry ce = (CatchEntry)(en.nextElement()); ce.resolve(e); } } int size() { return (8*entries.size()); } // each entry is 8 bytes void write(ClassEnv e, CodeAttr ce, DataOutputStream out) throws IOException, jasError { out.writeShort(entries.size()); for (Enumeration en = entries.elements(); en.hasMoreElements();) { CatchEntry entry = (CatchEntry)(en.nextElement()); entry.write(e, ce, out); } } }