In DecodeableRpcResult:

```java
default:
                throw new IOException("Unknown result flag, expect '0' '1' '2', get " + flag);
```

But in fact, DecodeableRpcResult can recognize '3', '4', and '5'. 
value = in.readObject((Class<?>) returnTypes[0], returnTypes[1]);
            }
            setValue(value);
        } catch (ClassNotFoundException e) {
            rethrow(e);
        }
    }
    private void handleException(ObjectInput in) throws IOException {
        try {
            Object obj = in.readObject();
            if (!(obj instanceof Throwable)) {
                throw new IOException("Response data error, expect Throwable, but get " + obj);
            }
            setException((Throwable) obj);
        } catch (ClassNotFoundException e) {
            rethrow(e);
        }
    }
    private void handleAttachment(ObjectInput in) throws IOException {
        try {
            setAttachments((Map<String, String>) in.readObject(Map.class));
        } catch (ClassNotFoundException e) {
            rethrow(e);
        }
    }
    private void rethrow(Exception e) throws IOException {
        throw new IOException(StringUtils.toString("Read response data failed.", e));
    }
}