Eclipse неправильно понимает аспект исключения

109
11

В Eclipse + AJDT я выполнил аннотацию метода для проверки авторизации следующим образом.

Аннотация:

@Retention(RetentionPolicy.RUNTIME)
public @interface Secured {}

аспект:

public aspect SecurityCheck {
pointcut checkSecurity(Secured annotation) : execution(@Secured * *.*(..)) && @annotation(annotation);

Object around(Secured annotation) throws PermissionException:
checkSecurity(annotation) {
...
if (...) throw new PermissionException();
...
return proceed(annotation);
}
}

Применение:

@Secured
public void someMethod() {}

Аннотации означают все методы, в которых должен применяться аспект. Аспект проверяет авторизацию и бросает PermissionException при сбое.

Однако, поскольку это проверенное исключение, someMethod() должно объявить его:

@Secured
public void someMethod() throws PermissionException {}

Eclipse это не нравится: внутри someMethod() нет ничего, чтобы выбросить PermissionException, поэтому он жалуется. Я должен сделать обходной путь:

@Secured
public void someMethod() throws PermissionException {
warn();
}

@SuppressWarnings("unused")
public static void warn() throws PermissionException {}

Это делает Eclipse счастливым, и все работает отлично. Тем не менее, довольно безобразно каждый раз вызывать warn() чтобы заставить Eclipse заткнуться.

Что можно сделать лучше? Является ли это простой ошибкой Eclipse?

спросил(а) 2021-01-27T20:13:09+03:00 5 месяцев, 4 недели назад
1
Решение
89

Я считаю, что вы наткнулись на ошибку (https://bugs.eclipse.org/bugs/show_bug.cgi?id=240608), которая не исправлена.

Вам нужно, чтобы это было проверенное исключение?

ответил(а) 2021-01-27T20:13:09+03:00 5 месяцев, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема