Как выкинуть исключение в AspectJ, посоветуйте
У меня есть несколько методов, которые выдают какое-то исключение, и я хочу использовать AspectJ, чтобы посоветовать рассчитать время выполнения и, если возникнет какое-то исключение, войти в журнал ошибок и продолжить поток, перебросив исключение.
Я пытался добиться этого, следуя инструкциям, но затмение говорит: «Тип необработанного исключения».
Код, в отношении которого должен использоваться аспектj:
<code>public interface Iface { public void reload() throws TException; public TUser getUserFromUserId(int userId, String serverId) throws ResumeNotFoundException, TException; public TUser getUserFromUsername(String username, String serverId) throws ResumeNotFoundException, TException; public TResume getPartialActiveProfileFromUserId(int userId, int sectionsBitField, String serverId) throws ResumeNotFoundException, UserNotFoundException; public TResume getPartialActiveProfileFromUsername(String username, int sectionsBitField, String serverId) throws ResumeNotFoundException, UserNotFoundException, TException; } </code>
Код аспекта: -
<code>public aspect AspectServerLog { public static final Logger ERR_LOG = LoggerFactory.getLogger("error"); Object around() : call (* com.abc.Iface.* (..)) { Object ret; Throwable ex = null; StopWatch watch = new Slf4JStopWatch(); try { ret = proceed(); }catch (UserNotFoundException e) { ex = e ; throw e ; } catch (ResumeNotFoundException e) { ex = e ; throw e ; } catch (Throwable e) { ex = e ; throw new RuntimeException(e); }finally{ watch.stop(thisJoinPoint.toShortString()); if(ex!=null){ StringBuilder mesg = new StringBuilder("Exception in "); mesg.append(thisJoinPoint.toShortString()).append('('); for(Object o : thisJoinPoint.getArgs()) { mesg.append(o).append(','); } mesg.append(')'); ERR_LOG.error(mesg.toString(), ex); numEx++; } } return ret; } } </code>
Пожалуйста, помогите, почему этот AspectJ не работает.