1. 程式人生 > >基於spring aop的dubbo異常統一處理

基於spring aop的dubbo異常統一處理

dubbo統一異常處理,呼叫方只顯示封裝後的異常。

1、返回封裝後的Exception

2、返回封裝後的統一返回資訊

import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.midea.jr.commons.utils.BeanUtils;
import com.midea.jr.efc.edp.common.bean.Response;
import com.midea.jr.efc.edp.common.enums.ResponseCodeEnum;
import com.midea.jr.efc.edp.common.exception.BizException;

/**
 * <p>Project: <p>
 * <p>Module: <p>
 * <p>Description: <p>
 *
 * @author wangzy25
 * @date 2017年6月12日 上午10:07:58
 */
@Component
@Aspect
public class DubboExceptionInterceptor {

	private static final Logger LOGGER = LoggerFactory.getLogger(DubboExceptionInterceptor.class);
	
	@AfterThrowing(throwing="ex",pointcut="execution(* com.midea.jr.efc.edp.api.service.**.*(..))")
    public BizException handle(Exception ex){
		LOGGER.error("Intercept dubbo exception:{}", ex.getMessage(), ex);
		if(ex instanceof BizException){
			throw (BizException)ex;
		}
		//如果是非包裝異常,則包裝成統一的內部異常
        throw new BizException(ResponseCodeEnum.EXCEPTION_INTERAL);
    }
	
	@AfterThrowing(throwing="ex",pointcut="execution(* com.midea.jr.efc.edp.api.service.**.*(..))")
    public Response<?> handle(Exception ex){
		Response<?> response = new Response<>();
		LOGGER.error("intercept ServiceException:{}", ex.getMessage(), ex);
		if(ex instanceof BizException){
			BeanUtils.copyProperties( ex, response );
			return response;
		}
		//如果是非包裝異常,則包裝成統一的內部異常
        return new Response<>(ResponseCodeEnum.EXCEPTION_INTERAL);
    }
	
}


相關推薦

Spring MVC異常統一處理的三種方式

  Spring 統一異常處理有 3 種方式,分別為: 使用 @ ExceptionHandler 註解 實現 HandlerExceptionResolver 介面 使用 @controlleradvice 註解 HandlerExceptionReso

spring mvc異常統一處理(實現HandlerExceptionResolver介面)不生效的問題解決

spring mvc異常統一處理常見的有3種方式: 使用 @ ExceptionHandler 註解 實現 HandlerExceptionResolver 介面 使用 @controlleradvice 註解 詳細的使用方法可參考博文:https://blog.c

spring mvc異常統一處理(使用ControllerAdvice註解)

1、配置 spring 版本: [html] view plain copy print? <org.springframework-version>4.1.9.RELEASE</org.springframework-version>

Spring MVC異常統一處理(包括普通請求異常以及ajax請求異常

通常SpringMVC對異常的配置都是返回某個jsp檢視給使用者,但是通過ajax方式發起請求,即使發生異常,前臺也無法獲得任何異常提示資訊。因此需要對異常進行統一的處理,對於普通請求以及ajax請求的異常都有效。 1.Spring MVC的異常處理機制 Spring

Spring MVC異常統一處理(異常資訊的國際化,日誌記錄)

       JAVA EE專案中,不管是對底層的資料操作,還是業務層的處理過程,還是控制層的處理,都不可避免的會遇到各種可預知的(業務異常主動丟擲)、不可預知的異常需要處理。一般dao層、service層的異常都會直接丟擲,最後由controller統一進行處理,每個過程

Spring MVC異常統一處理

/** * 自定義返回結果封裝類 */public class ResultUtil implements Serializable {private static final long serialVersionUID = 1L;private Integer code;private String msg

基於spring aop的dubbo異常統一處理

dubbo統一異常處理,呼叫方只顯示封裝後的異常。 1、返回封裝後的Exception 2、返回封裝後的統一返回資訊 import org.aspectj.lang.annotation.AfterT

基於Spring Boot的統一異常處理設計

基於Spring Boot的統一異常處理設計 作者: Grey 原文地址:https://www.cnblogs.com/greyzeng/p/11733327.html Spring Boot中,支援RestControllerAdvice統一處理異常,在一個請求響應週期當中,如果Controller,Se

spring boot 系統異常統一處理

1.系統異常捕獲 @ControllerAdvice(annotations = {RestController.class}) public class GlobalExceptionHandler { private Logger logger = LoggerFactory.get

spring Aop實現身份驗證和springboot異常統一處理

文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:好好學java,獲取優質學習資源。 一、spring Aop身份驗證 一般,如果使用者沒有登入的話,使用者只可以檢視商品,但是其他的,比如支付等是不能夠進行操作的,這個時候,我們

java異常統一處理

出現 actor 錯誤 統一處理 type .get 。。 cfa getc 一般系統拋出的錯誤不含錯誤代碼,出去部分的404,500,400之外,我們如果想吧錯誤代碼定義的更細致,就需要自己繼承RuntimeExeption這個類後,重新定義構造方法定義自己的錯誤信息。

SpringBoot異常統一處理機制

springboot官網說了三種異常處理,分為機器客戶端和瀏覽器客戶端,區別為機器客戶端請求返回的是頭中Accept是"/"或者空,異常返回值json,瀏覽器客戶端請求頭中Accept是"text/html" 返回的是html 如下圖: 機器客戶端: 瀏覽器客戶端: 下面

Springboot-系統異常統一處理(介面程式設計異常處理

Springboot-系統異常統一處理(介面程式設計異常) 1. 系統異常捕獲 /** * 全域性異常處理 * @Author: wangxc * @GitHub: https://github.com/vector4wang * @CS

異常統一處理的一些思路

1.AppException 統一處理所有異常 //將出現的所有異常都用AppException public class AppException extends Exception {

Springboot專案全域性異常統一處理

最近在做專案時需要對異常進行全域性統一處理,主要是一些分類入庫以及記錄日誌等,因為專案是基於Springboot的,所以去網路上找了一些部落格文件,然後再結合專案本身的一些特殊需求做了些許改造,現在記錄下來便於以後檢視。在網路上找到關於Springboot全域性異常統一處理的

java/spring scheduler 異常捕獲處理

由於java的異常會導致執行緒被打斷,因此任務的異常是被任務工作執行緒捕獲的。 若需要對任務執行情異常捕獲可以這樣操作: ScheduledExecutorService scheduler = Executors.newSingleThreadSche

SpringMVC全域性異常統一處理

(1)使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver:<!-- springmvc提供的簡單異常處理器 --> <be

@ControllerAdvice自定義異常統一處理

正常來說一個系統肯定有很多業務異常。而這些業務異常的資訊如何返回給前臺呈現給使用者。比如使用者的某些操作不被允許,需要給使用者提示。 Spring 提供了@ControllerAdvice這個註解,這個註解可以實現全域性異常處理,全域性資料繫結,全域性資料預處理,這裡主要說下使用這個註解實現全域性異常處理。

Spring Boot學習——統一異常處理

return 方法 ssa static framework 處理異常 tor ebo except 本隨筆記錄使用Spring Boot統一處理異常。 本文實例是從數據庫中根據ID查詢學生信息,要求學生的年齡在14——20歲之間。小於14歲,提

spring 或 springboot統一異常處理

pbo catch ada pass ann href TP let copy spring 或 springboot統一異常處理https://blog.csdn.net/xzmeasy/article/details/76150370 一,本文介紹spring MV