正确使用异常是微服务架构重要性中的前三。我没意见。节日快乐。最近想说说异常。我的思维似乎形成了一个闭环。希望这个组合拳能对你的业务代码有所帮助。下面只讨论世界上最好的语言,生态最完整的语言,不发表意见。异常的异同PHP7的异常设计与Java的ExceptionextendsThrowable是一致的,但是在历史原因和设计理念上还是有一些细微的差别。比如PHP中的异常有一个code属性,这样就有多个异常聚集成同一个异常,然后根据code在catch块中写入不同的业务逻辑代码。但是Java异常是没有代码的,所以不能这样设计,不同的异常只能针对不同的情况。因此,我们习惯于通过封装类来封装对外暴露的服务,而不是直接依赖异常的透传。统一的异常处理在Java代码中,最受诟病的莫过于漫山遍野的trycatch。我没意见。只需获取一段代码@OverridepublicDataResult>getAds(IntegerliveId){try{ListadsDTO=newArrayList<>();//...省略业务逻辑DataResult.success(adsDTO);}catch(Exceptione){log.error("getAdshasException:{}",e.getMessage(),e);DataResult.failure(ResultCode.CODE_INTERNAL_ERROR,e.getMessage());//返回异常信息给Server-sidecaller}returndataResult;}很多时候无脑先写一个trycatch,不管里面有没有非运行时异常。更好的方法是使用aop拦截所有服务方法调用,统一接管异常再处理。@Around("recordLog()")publicObjectrecord(ProceedingJoinPointjoinPoint)throwsThrowable{//...请求调用源记录对象结果;尝试{结果=joinPoint.proceed(joinPoint.getArgs());}catch(Exceptione){//...记录异常日志DataResult