aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist/expr/Handler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/javassist/expr/Handler.java')
-rw-r--r--src/main/javassist/expr/Handler.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/main/javassist/expr/Handler.java b/src/main/javassist/expr/Handler.java
index 6f8c44cf..5bed0924 100644
--- a/src/main/javassist/expr/Handler.java
+++ b/src/main/javassist/expr/Handler.java
@@ -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;
}
/**