Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to catch exception in Join point which was thrown from @Around

Following up with this comment of my previous question. I'm trying to throw an exception from the @Around advice, and catch it within the callee class and/or method. But I'm getting this error:

Stacktraces

java.lang.Exception: User not authorized
    com.company.aspect.AuthorizeUserAspect.isAuthorized(AuthorizeUserAspect.java:77)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:616)
    ...

The Aspect code is:

@Aspect
public class AuthorizeUserAspect {
    @AuthoWired
    private UserService service;

    @Pointcut("@annotation(module)")
    public void authorizeBeforeExecution(AuthorizeUser module) {}

    @Around(value = "authorizeBeforeExecution(module)", argNames="module")
    public Object isAuthorized(ProceddingJoinPoint jp, AuthorizeUser module) throws Throwable {
        // Check if the user has permission or not
        service.checkUser();

        if ( /* User has NOT permission */ ) {
            throw new MyCustomException("User not authorized"); // => this is line 77
        }

        return jp.proceed();
    }
}

and the Struts's based UI action code is:

@Component
public class DashboardAction extends ActionSupport {
    @Override
    @AuthorizeUser
    public String execute() {
        ...
    }

    private void showAccessDenied() {
       ...
    }
}

The question is How or Where I can catch that exception to execute showAccessDenied()?

like image 685
Khosrow Avatar asked Jan 21 '26 07:01

Khosrow


1 Answers

To handle uncaught exceptions like MyCustomException you need to define a global exception handler in Struts 2. Please check this guide: http://struts.apache.org/2.3.4.1/docs/exception-handling.html

like image 92
anubhava Avatar answered Jan 24 '26 07:01

anubhava