@Override
    public ExecuteContext onThrow(ExecuteContext context) {
        if (shouldHandle(context)) {
            ThreadLocalUtils.removeRequestData();
            ThreadLocalUtils.removeRequestTag();
        }
        return context;
    }
@Test
    public void testOnThrow() {
        ThreadLocalUtils.setRequestTag(new RequestTag(null));
        ThreadLocalUtils.setRequestData(new RequestData(null, null, null));

        // State is null
        interceptor.onThrow(context);
        Assert.assertNotNull(ThreadLocalUtils.getRequestTag());
        Assert.assertNotNull(ThreadLocalUtils.getRequestData());

        // The State is not DISCONNECTING
        arguments[1] = State.CONFIGURED;
        interceptor.onThrow(context);
        Assert.assertNotNull(ThreadLocalUtils.getRequestTag());
        Assert.assertNotNull(ThreadLocalUtils.getRequestData());

        // The State is DISCONNECTING
        arguments[1] = State.DISCONNECTING;
        interceptor.onThrow(context);
        Assert.assertNull(ThreadLocalUtils.getRequestTag());
        Assert.assertNull(ThreadLocalUtils.getRequestData());
    }