異常處理(2021 02 22)

2021-10-19 18:30:03 字數 1385 閱讀 3527

如果**中的 異常(checked exception 或者 unchecked exception )被 catch 處理, 那麼  @exceptionhandler  就不會接收處理

如果catch 沒有處理, 那麼 一般為  在 方法級別  throws , 這樣就會被 exceptionhandler接收並處理

@controlleradvice  +   @exceptionhandler 可以處理 controller 中的異常,

對於 web 的 普通   filter 和 springcloud gateway  filter  中的異常處理,

用 catch 捕獲並自行定義處理方式: 

web 的 普通   filter處理方式二: 

用過 controlleradvice 的人肯定知道,controlleradvice 是無法處理過濾器中的異常的。

下面介紹的方式,其思想早在 struts ***時代就存在了。有興趣的可以去看看 sturts ***組,第乙個就是 exception ***。本質上是借助過濾器棧,將異常處理的過濾器放在第乙個位置。

(1) 定義 exceptionfilter,將捕捉的異常交給異常處理的 controller

(2) 注入 exceptionfilter。請務必呼叫 setorder 方法,保持 order 值最大,這樣過濾就能排在第乙個。

(3) 定義丟擲異常的 controller

如此,過濾器中的異常就傳遞到 controller,也能夠被 controlleradvice 處理了。

補充: 一般在 微服務架構中,閘道器服務不需要加 servlet規範的過濾器(filter)因為gateway已經提供了各種過濾器,    在其它服務加 的 話, 使用 @servletcomponentscan+@webfilter

因為gateway和zuul不一樣,gateway用的是長連線,netty-webflux,zuul1.0用的就是同步webmvc。所以你的非gateway子專案啟動用的是webmvc,你的gateway啟動用的是webflux. spring-boot-start-web和spring-boot-start-webflux相見分外眼紅。不能配置在同一pom.xml,或者不能在同一專案**現。

20210222 除錯記錄

當前的任務 主要是要把啟動時候的轉速 降低發現調節 在vf 切換到 無感控制時候 的 pi 初始值 效果比較明顯 主要是把下圖的 vf切換到無感的這個電機轉速的過充去掉。其實這個是假的,主要是由於過渡過程中的 全部圖 在軟啟動中 不增加去掉 下面的如果切換到 無感控制 並且給定的轉速小於20000 ...

struts 異常處理 全域性異常處理

記錄一下全域性異常處理的過程 處理主動丟擲的異常,轉向錯誤提示頁面。1 寫乙個自己的異常,繼承runtimeexception,從父類生成構造方法 package me.yndy.srtp.exception suppresswarnings serial public class errorexc...

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...