package Ġxyz . sr cl ab . spring . boot . web . exception Ċ Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation . Controller Ad vice Ċ import Ġorg . springframework . web . bind . annotation . ExceptionHandler Ċ import Ġorg . springframework . web . bind . annotation . ResponseBody Ċ import Ġxyz . sr cl ab . common . exception . Exception Status Ċ import Ġxyz . sr cl ab . spring . boot . exception . Exception Handling Service Ċ import Ġjavax . annotation . Resource Ċ Ċ @ Controller Ad vice Ċ open Ġclass ĠWeb Exception Ad vice Ġ{ ĊĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexception Handling Service : ĠException Handling Service ĊĊĠĠĠ Ġ@ ExceptionHandler ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġopen Ġfun Ġdo Exception ( e : ĠException ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e Ġis ĠException Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstatus Exception To Response (( e )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexception Handling Service . handle < Any ? >( e ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠException Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstatus Exception To Response (( result )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠResponseEntity <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexception ResponseBody Ġ= Ġe . to Exception ResponseBody () ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( exception ResponseBody , ĠHttpStatus . INTERNAL _ SERVER _ ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstatus Exception To Response ( exception Status : ĠException Status ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception ResponseBody Ġ= Ġexception Status . to Exception ResponseBody () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( exception Status Ġis ĠWeb Status Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity ( exception ResponseBody , Ġexception Status . http Status ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity ( exception ResponseBody , ĠHttpStatus . INTERNAL _ SERVER _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }