• 旭东
    2020-02-01
    前端vue 就更好了

    作者回复: 课程的重点是微服务和云原生架构,微服务/云原生架构和具体前端(vue/reactjs/angularjs)无关,课程以reactjs为例只是演示。

    
    
  • Demon.Lee
    2019-11-20
    老师,微服务异常设计这块,您有什么好的实践么?
    1. 比如,异常的分类,有的人归结为:业务异常,系统异常,代码异常 三类,您怎么看?
    2. 有时候,我们需要针对某一种特殊异常进行数据回滚处理,此时就得用特殊异常了,比如:微服务A调用了微服务B,微服务B可能会出现各种异常,但我只需要针对其中某一种或几种异常进行数据回滚操作(即要重新调用微服务B的反向API),此时异常分类又不一样了,只是3类肯定不行。
    我用的暂时是mongoDB,事务不要求强一致性。

    所以,我在想是不是统一返回给的web前端的异常,设计成3类就行,而微服务之间则需要按照具体需要进行设计。还望老师解答下,谢谢了。
    展开

    作者回复: 我之前设计框架的时候,一般只设计两类异常,一类是框架异常(或者你说的系统异常),另一类是业务异常(业务开发自己定制扩展)。

    异常种类不需要太多,但是错误码(error code)和错误消息(error message)可以按需定义。你提到的回滚操作可以根据错误码判断。

    
    
  • grey927
    2019-10-23
    杨老师,我有2个疑问,关于Staffjoy中的ServiceException,
    1. 我理解是异常的基类,如果业务模块自定义的异常,应该就是继承这个ServiceException这个基类就可以了对吧?我这个理解是否有问题?
    2. 为什么是继承RuntimeExcetption类,而不是直接继承Exception类?

    作者回复: 你好,因为Staffjoy是一个简单教学案例,所以:

    1. 服务层的异常统一包装成ServiceException,里头有error code和message等关键信息就够了,暂时也没有必要再继承。

    2. 继承RuntimeException就不用麻烦手动捕获,可以集中让Spring ControllerAdvice异常机制统一捕获。

    当然,这个只是我个人做法,对于异常的使用,不同的人有不同的风格,所以你也可以按需采用你自己的风格。

    
    
  • ZeroE
    2019-10-14
    老师,统一异常处理是写在common-lib里面的,但是web-app通过dependency的方式引入之后,在怎么把common-lib里面的异常处理类实例化的?

    作者回复: 统一异常处理用了Spring的RestControllerAdvice机制(可以网上找下,相关文档很多),相关类GlobalExceptionTranslator在common-lib中,其它Spring应用只要能类扫描到并加载这个GlobalExceptionTranslator,就可以实现统一异常处理。

    在其它Spring应用中,框架异常或者你自己定义的异常,向外抛出时,最终会被这个RestControllerAdvice所捕获,并做统一处理。

    
    
  • jshadow
    2019-09-24
    请问老师,视频里全局格式化BaseResponse Json格式的地方在哪个地方了?因为按照您视频里的例子,我这边返回BaseResponse后,Json格式有点小问题

    作者回复: 从你描述我没有看出具体什么问题,可以加我微信(bulldog2015,说明来自极客时间),进一步了解细节。

    
    
  • 吕
    2019-07-31
    我也做了统一异常处理,但是对于sql执行时的错误,会直接反馈的页面sql乱码,而不是友好提示,不知道怎么处理

    作者回复: 你可以在ControllerAdvice里头对SQL相关类型的异常单独捕获和转换处理一下,给用户一个友好的提示。

    
    
  • Fchen
    2019-07-24
    mvc的可以使用@ControllerAdvice注解,和@RestControllerAdvice类似的

    作者回复: 是的,谢谢提醒!

    
    
  • oldriver
    2019-07-21
    老师,虽然统一异常处理能让开发人员专注于业务,任何不符合业务规范的地方都通过异常往外throw,这样容易让开发人员乱throw异常,而创建异常本身是比较好性能的,而且统一异常是通过aop实现的,在项目比较小的时候可能对业务没啥影响,但是在高并发,大业务量场景下是不是也能使用统一异常处理,我团队内部对此进行了讨论,但是没有结果(目前项目的业务量不大,使用的是统一异常处理),能否请老师告知下,像一些一线大厂(阿里,字节跳动),在高并发场景下是如何处理异常的

    作者回复: 你好,统一异常处理属于微服务治理的重要环节,不管公司规模大小,并发量多大,都要做。我之前在eBay这种大厂工作过,它的交易量非常大,但它的框架层和业务层错误处理做得非常细致,反倒是一些中小公司常常忽略异常处理。异常处理发生时的确有一定的性能损耗,但是这个是必须的,而且生产级代码是建议尽可能细致全面的做错误处理,目前没有证据显示,细粒度的错误处理会引发性能问题。另外,很多大厂的服务框架都有统一异常处理逻辑,统一异常处理有利于规范和后续的运维。

     1
    
  • 磊
    2019-07-21
    希望老师阐述关于架构设计方面的实践经验,代码层面不易过细,代码入门大可以看其他教程,因为第二次更新明显感觉不如前10课干货多

    作者回复: 你好,第二章本身就是关于框架设计的,偏代码层次较多。后续课程大部分都是架构原理+代码分析结合,大致一半一半的比例。最后几章偏实际操作容器部署为主。谢谢继续关注我的课程!

    
    
  • WL
    2019-07-19
    请问一下老师过滤器怎样进行统一异常处理

    作者回复: 你指的是Servlet Filter吗?如果是,在Spring中也可以统一异常处理,类似MVC统一异常处理做法,实现ErrorController接口。可以参考staffjoy中的faraday项目GlobalErrorController(https://github.com/spring2go/staffjoy/blob/master/faraday/src/main/java/xyz/staffjoy/faraday/controller/GlobalErrorController.java)

    
    
我们在线,来聊聊吧