@Test
  public void testUnknownException() throws Throwable {

    // create client service
    Service clientService =
        ProxyUtil.createClientProxy(
            cl, Service.class, false, jsonRpcClient, clientInputStream, clientOutputStream);

    jsonRpcServer.setErrorResolver(AnnotationsErrorResolver.INSTANCE);

    mockCtx.checking(
        new Expectations() {
          {
            one(serviceMock).unresolvedExceptionThrown();
            will(throwException(new IllegalArgumentException("testing")));
            one(serviceMock).undelcaredExceptionThrown();
            will(throwException(new IllegalArgumentException("testing")));
          }
        });

    try {
      clientService.unresolvedExceptionThrown();
      fail("Expecting exception");
    } catch (Throwable t) {
      assertTrue(JsonRpcClientException.class.isInstance(t));
    }

    try {
      clientService.undelcaredExceptionThrown();
      fail("Expecting exception");
    } catch (Throwable t) {
      assertTrue(JsonRpcClientException.class.isInstance(t));
    }
  }
 @Override
 public void run() {
   keepRunning.set(true);
   while (keepRunning.get()) {
     try {
       if (ips.available() > 0) {
         jsonRpcServer.handle(ips, ops);
       }
     } catch (Exception e) {
       e.printStackTrace();
       return;
     }
     synchronized (startLock) {
       startLock.notify();
     }
   }
 }