AvoidCatchingThrowableRule.java
01 package net.sourceforge.pmd.lang.java.rule.strictexception;
02 
03 import net.sourceforge.pmd.lang.java.ast.ASTCatchStatement;
04 import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceType;
05 import net.sourceforge.pmd.lang.java.ast.ASTType;
06 import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule;
07 
08 /**
09  * Finds <code>catch</code> statements
10  * containing <code>throwable</code> as the type definition.
11  <p/>
12  *
13  @author <a mailto:trondandersen@c2i.net>Trond Andersen</a>
14  */
15 public class AvoidCatchingThrowableRule extends AbstractJavaRule {
16 
17     @Override
18     public Object visit(ASTCatchStatement node, Object data) {
19         ASTType type = node.getFirstDescendantOfType(ASTType.class);
20         ASTClassOrInterfaceType name = type.getFirstDescendantOfType(ASTClassOrInterfaceType.class);
21         if (name.hasImageEqualTo("Throwable")) {
22             addViolation(data, name);
23         }
24         return super.visit(node, data);
25     }
26 }