全部产品
Search
文档中心

区块链服务 BaaS:错误信息

更新时间:May 08, 2020

收到交易的结果后,若交易执行不正确,可以根据错误码去定位错误原因。

  • ErrorCoderesponseerrorCode 字段用来表示交易发送或者执行错误的原因。
  • 当发送的请求是交易相关的内容时,可根据交易的返回值字段获得关于交易执行错误更详细的错误码。

以部署合约为例:

  1. // 同步执行
  2. DeployContractResponse response = sdk.getContractService().deployContract(request);
  3. // 作为交易是否发送成功的标志。若交易发送失败,可通过result.getErrorCode() 获取错误码。
  4. assertTrue(response.isSuccess());
  5. // 0 代表交易执行成功,反之代表交易执行失败,可通过 result 的值从 ErrorCode 对象中查找错误原因。
  6. assertEquals(0, response.getTransactionReceipt().getResult());
  7. // 异步执行
  8. int result = sdk.getContractService().asyncDeployContract(
  9. request,
  10. new IAsyncCallback() {
  11. @Override
  12. public void onResponse(int errorCode, Response response) {
  13. // errorCode 等于 0 表示收到平台的响应,20072 表示消息超时,30018 表示消息超过了队列最大值(需考虑设置 NetworkOption.threadPoolQueueSize 的值)
  14. assertEquals(0, errorCode);
  15. // 作为交易是否发送成功的标志。若交易发送失败,可通过 result.getErrorCode() 获取错误码。
  16. assertTrue(response.isSuccess());
  17. // 0 代表交易执行成功,反之代表交易执行失败,可通过 result 的值从 ErrorCode 对象中查找错误原因。
  18. // 注意回调的 response 需转换为请求的响应,比如: DeployContractRequest 对应的是 DeployContractResponse
  19. assertEquals(0, deployContractResponse.getTransactionReceipt().getResult());
  20. }
  21. });