From b2e87fe559a649bf03c66e5fabe07f56db5d13cb Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 15 May 2015 14:28:11 +0200 Subject: [PATCH] IG: handle classes and lambda's correctly in "Overly broad 'catch' block" inspection --- .../com/siyeh/ig/psiutils/ExceptionUtils.java | 16 +++++++--------- .../toobroadcatch/TooBroadCatchBlock.java | 11 +++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExceptionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExceptionUtils.java index 9ffea2e3d9b7..2f2166b765e8 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExceptionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExceptionUtils.java @@ -242,17 +242,15 @@ public class ExceptionUtils { } @Override - public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) { - super.visitMethodCallExpression(expression); - final PsiMethod method = expression.resolveMethod(); - collectExceptionsThrown(method, m_exceptionsThrown); - } + public void visitClass(PsiClass aClass) {} @Override - public void visitNewExpression(@NotNull PsiNewExpression expression) { - super.visitNewExpression(expression); - final PsiMethod method = expression.resolveMethod(); - collectExceptionsThrown(method, m_exceptionsThrown); + public void visitLambdaExpression(PsiLambdaExpression expression) {} + + @Override + public void visitCallExpression(PsiCallExpression callExpression) { + super.visitCallExpression(callExpression); + collectExceptionsThrown(callExpression.resolveMethod(), m_exceptionsThrown); } @Override diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/errorhandling/toobroadcatch/TooBroadCatchBlock.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/errorhandling/toobroadcatch/TooBroadCatchBlock.java index 5468ae045442..26eae048d90b 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/errorhandling/toobroadcatch/TooBroadCatchBlock.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/errorhandling/toobroadcatch/TooBroadCatchBlock.java @@ -85,4 +85,15 @@ public class TooBroadCatchBlock{ return false; } } + + void m3() { + try { + new Object() { + void f() throws FileNotFoundException { + throw new FileNotFoundException(); + } + }; + throw new IOException(); + } catch (IOException e) {} + } }