1cming
V2EX  ›  Java

服务化的系统, provider 和 consumer 之间异常的协议如何约定?

  •  
  •   1cming · Aug 4, 2019 · 2972 views
    This topic created in 2498 days ago, the information mentioned may be changed or developed.

    两种方式:

    1.抛出异常,向上传递
    2.错误码

    大家支持哪种?理由是什么?

    附一个 dubbo 官网的片段:

    异常

    建议使用异常汇报错误,而不是返回错误码,异常信息能携带更多信息,并且语义更友好。

    如果担心性能问题,在必要时,可以通过 override 掉异常类的 fillInStackTrace() 方法为空方法,使其不拷贝栈信息。

    查询方法不建议抛出 checked 异常,否则调用方在查询时将过多的 try...catch,并且不能进行有效处理。

    服务提供方不应将 DAO 或 SQL 等异常抛给消费方,应在服务实现中对消费方不关心的异常进行包装,否则可能出现消费方无法反序列化相应异常。

    2 replies    2019-08-16 17:54:17 +08:00
    cmonkey
        1
    cmonkey  
       Aug 16, 2019
    要是提供者和消费者不是统一语言怎么办
    1cming
        2
    1cming  
    OP
       Aug 16, 2019
    @cmonkey
    暂时不考虑跨语言的问题,跨语言可能就考虑 Thrift 了。
    另外说到跨语言其实根本上还是在说异构系统之间的交互,异构系统之间用错误码没有疑问。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   878 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:59 · PVG 05:59 · LAX 14:59 · JFK 17:59
    ♥ Do have faith in what you're doing.