]> source.dussan.org Git - javassist.git/commitdiff
fixed JIRA JASSIST-83
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 9 Jun 2009 08:50:06 +0000 (08:50 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 9 Jun 2009 08:50:06 +0000 (08:50 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@479 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/bytecode/ExceptionTable.java
src/main/javassist/expr/Handler.java

index b24bd04b26939d16a580945aa709e58a87f73659..1c74e6e0dbbf852b05030f39eb8bc90c9722145c 100644 (file)
@@ -153,6 +153,8 @@ public class ExceptionTable implements Cloneable {
      * Returns <code>catchType</code> of the <i>n</i>-th entry.
      *
      * @param nth               the <i>n</i>-th (&gt;= 0).
+     * @return an index into the <code>constant_pool</code> table,
+     *          or zero if this exception handler is for all exceptions.
      */
     public int catchType(int nth) {
         ExceptionTableEntry e = (ExceptionTableEntry)entries.get(nth);
index 6f8c44cff640fe89b8727b942e4b0731c96f55cb..5bed092458a4c93942df4e0d5e171e60179d019c 100644 (file)
@@ -20,7 +20,7 @@ import javassist.bytecode.*;
 import javassist.compiler.*;
 
 /**
- * Catch clause.
+ * A <code>catch</code> clause or a <code>finally</code> block.
  */
 public class Handler extends Expr {
     private static String EXCEPTION_NAME = "$1";
@@ -69,11 +69,24 @@ public class Handler extends Expr {
 
     /**
      * Returns the type handled by the catch clause.
+     * If this is a <code>finally</code> block, <code>null</code> is returned.
      */
     public CtClass getType() throws NotFoundException {
-        ConstPool cp = getConstPool();
-        String name = cp.getClassInfo(etable.catchType(index));
-        return thisClass.getClassPool().getCtClass(name);
+        int type = etable.catchType(index);
+        if (type == 0)
+            return null;
+        else {
+            ConstPool cp = getConstPool();
+            String name = cp.getClassInfo(type);
+            return thisClass.getClassPool().getCtClass(name);
+        }
+    }
+
+    /**
+     * Returns true if this is a <code>finally</code> block.
+     */
+    public boolean isFinally() {
+        return etable.catchType(index) == 0;
     }
 
     /**