package Ġcom . ta ir its u . ign ot us . exception Ċ Ċ import Ġcom . ta ir its u . ign ot us . exception . business . Unexpected Exception Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . web . bind . annotation . Controller Ad vice Ċ import Ġorg . springframework . web . bind . annotation . ExceptionHandler Ċ import Ġorg . springframework . web . bind . annotation . ResponseBody Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ /** Ċ Ġ* Ġ åħ¨å±Ģ å¼Ĥå¸¸ å¤ĦçĲĨ Ċ Ġ*/ Ċ @ Controller Ad vice Ċ open Ġclass ĠApiException Handler Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( this :: class . java ) ĊĊĠĠĠ Ġ@ Autowired ( required Ġ= Ġfalse ) ĊĠĠĠ Ġvar Ġreporter : ĠApiException Reporter ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ ApiException :: class ]) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġopen Ġfun Ġapi ExceptionHandler ( ĊĠĠĠĠĠĠĠ Ġreq : ĠHttpServletRequest , ĊĠĠĠĠĠĠĠ Ġresponse : ĠHttpServletResponse , ĊĠĠĠĠĠĠĠ Ġe : ĠApiException , ĊĠĠĠ Ġ): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġreporter ?. report ( e ) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġobj [" errors "] Ġ= Ġe . toJSON Array () ĊĠĠĠĠĠĠĠ Ġresponse . status Ġ= Ġe . get HttpStatus (). value () ĊĊĠĠĠĠĠĠĠ Ġreq . setAttribute (" api _ exception _ handler ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġreturn Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Exception :: class ]) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġopen Ġfun Ġunexpected ExceptionHandler ( ĊĠĠĠĠĠĠĠ Ġreq : ĠHttpServletRequest , ĊĠĠĠĠĠĠĠ Ġresponse : ĠHttpServletResponse , ĊĠĠĠĠĠĠĠ Ġe : ĠException , ĊĠĠĠ Ġ): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ( e . message Ġ?: Ġe . toString (), Ġe ) ĊĠĠĠĠĠĠĠ Ġval Ġreason Ġ= ĠUnexpected Exception ( e ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapi ExceptionHandler ( req , Ġresponse , Ġreason ) ĊĠĠĠ Ġ} Ċ } Ċ