package Ġcom . kotlin . res ili ency . web Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . kotlin . res ili ency . web . Beans . API ErrorException Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . MediaType Ċ 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 . context . request . WebRequest Ċ import Ġorg . springframework . web . servlet . mvc . method . annotation . Response Entity ExceptionHandler Ċ Ċ @ Controller Ad vice Ċ class ĠException Handler ( Ċ ĉ private Ġval ĠobjectMapper : ĠObjectMapper Ċ ) Ġ: ĠResponseEntity ExceptionHandler () Ġ{ ĊĊ ĉ @ ExceptionHandler ( value Ġ= Ġ([ API ErrorException :: class ])) Ċ ĉ protected Ġfun Ġhandle Exceptions Thrown From Controller ( Ċĉ ĉ ex : ĠRuntimeException , Ċĉ ĉ request : ĠWeb Request Ċ ĉ ): ĠResponseEntity < Any > Ġ{ Ċĉ ĉ when ( ex ) Ġ{ Ċĉĉ ĉ is ĠAPI ErrorException Ġ-> Ġ{ Ċĉĉĉ ĉ return Ġhandle Exception Internal ( Ċĉĉĉĉ ĉ ex , Ċĉĉĉĉ ĉ object Mapper . writeValue AsString ( ex . error ), Ċĉĉĉĉ ĉ HttpHeaders (). also Ġ{ Ċĉĉĉĉĉ ĉ it . contentType Ġ= ĠMediaType . APPLICATION _ PRO BLE M _ JSON Ċĉĉĉĉ ĉ }, Ċĉĉĉĉ ĉ ex . error . status , Ċĉĉĉĉ ĉ request Ċĉĉĉ ĉ ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ġ-> Ġ{ Ċĉĉĉ ĉ return Ġhandle Exception Internal ( Ċĉĉĉĉ ĉ ex , Ċĉĉĉĉ ĉ object Mapper . writeValue AsString ( ex ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Headers (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . INTERNAL _ SERVER _ ERROR , Ċĉĉĉĉ ĉ request Ċĉĉĉ ĉ ) Ċĉĉ ĉ } Ċĉ ĉ } ĊĊ ĉ } Ċ }