我有以下RestController(Spring boot 2.0.4)和幾個(gè)遵循相同結(jié)構(gòu)的execute. 他們可能會(huì)指出不同url或被注釋@GetMapping而不是@PostMapping:@RestControllerpublic class Controller { private final DataAccessLayer dal; @PostMapping("myUrl_1") execute(@RequestBody String param) { try { ... } catch (CustomException e) { ... } catch (CustomException_2 e_2) { ... } finally { ... } } ...}唯一的區(qū)別是param用法和dal用法。我的問題是,如何避免catch和finally子句中的代碼重復(fù)?
2 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用@ControllerAdvice
和@ExceptionHandler
。
@ControllerAdvice
: 默認(rèn)情況下@ControllerAdvice
將應(yīng)用于所有使用 @Controller 注釋的類。如果您希望這更具體,那么您可以通過編寫一些屬性來實(shí)現(xiàn),例如@ControllerAdvice("my.org.package")
@ExceptionHandler
:@ControllerAdvice
與 with 一起使用@ExceptionHandler
提供全局錯(cuò)誤處理。您可以編寫@ExceptionHandler(IllegalArgumentException.class)
將處理所有異常的注釋IllegalArgumentException
。
添加回答
舉報(bào)
0/150
提交
取消