日常踩坑 2 切面未做異常處理

2021-09-24 09:50:02 字數 982 閱讀 2204

author:趙志幹

date:2019-06-12

declaration:all right reserved!!!

踩坑:

前提:切面邏輯和業務**均未做異常處理。

場景:專案採用多資料來源配置,在切面中完成資料來源的動態切換。當業務**拋異常後,沒有自動切回預設資料來源。

做法:

public object around(proceedingjoinpoint point, changedatasource source) throws throwable 

//執行業務**

object obj = point.proceed();

//切換回預設資料來源

dynamicdatasource.putdatasource("default");

return obj;

}

解決方案:

上述問題是因異常丟擲導致未執行切回預設資料來源邏輯,故可依據實際的需要採用如下兩種方案解決:

方案1:業務**中將異常捕獲,不進行丟擲。該方案的限制性較強,有時不滿足要求,故不建議採用。

方案2:在切面邏輯中使用finally子句確保切回預設資料來源邏輯會執行。如下:

public object around(proceedingjoinpoint point, changedatasource source) throws throwable 

//執行業務**

object obj = point.proceed();

} finally

return obj;

}

建議:

凡是某些邏輯需要必須執行的,建議放在finally子句中,保證對應邏輯一定會執行到(虛擬機器宕掉的情況除外)。

日常踩坑18 3 29

sublime中 自動補齊外掛程式emmet還有各種各種,網上隨手能搜到,但是有時候裝了外掛程式也不自動補齊,這時候,tab鍵就異常的好用了。css中檔案路徑 相對.css所在的目錄而言 表示上一級目錄開始 表示當前同級目錄開始 表示根目錄開始。表示原始檔所在目錄的上上級目錄 切圖基本原則 盡量使用...

日常踩坑小計

1.空指標異常nullpointexceptin a.物件 獲取物件屬性時前一步一定要對物件做判空處理,應該規整 嚴謹。判斷時最好null在前。例如if null object else b.集合 for迴圈集合之前也要對集合做判空處理,迴圈過程中不得對集合做增刪操作,這會令集合大小發生改變,從而影...

日常踩坑總結

self.parser.add argument lr use action store true default false cuda visible devices 1 python my script.py 方法一 os.environ cuda visible devices 2 方法二 t...