void (@NotNull PsiElement element) { final PsiCatchSection catchSection = (PsiCatchSection)element.getParent(); final NavigatablePsiElement owner = PsiTreeUtil.getParentOfType(catchSection, PsiMethod.class, PsiLambdaExpression.class); final PsiMethod method; if (owner instanceof PsiMethod) { method = (PsiMethod)owner; } else if (owner instanceof PsiLambdaExpression) { method = LambdaUtil.getFunctionalInterfaceMethod(owner); } else { return; } if (method == null) { return; } // todo warn if method implements or overrides some base method // Warning // "Method xx() of class XX implements/overrides method of class // YY. Do you want to modify the base method?" // [Yes][No][Cancel] addToThrowsList(method.getThrowsList(), catchSection.getCatchType()); final PsiTryStatement tryStatement = catchSection.getTryStatement(); if (tryStatement.getCatchSections().length > 1 || tryStatement.getResourceList() != null || tryStatement.getFinallyBlock() != null) { catchSection.delete(); } else { BlockUtils.unwrapTryBlock(tryStatement); } }