@ file : Suppress (" unused ") Ċ Ċ package Ġio . must el id ae . smooth co ated ot ter . api . config Ċ Ċ import Ġio . must el id ae . smooth co ated ot ter . api . common . Error Ċ import Ġio . must el id ae . smooth co ated ot ter . api . common . ErrorCode Ċ import Ġio . must el id ae . smooth co ated ot ter . api . common . Error Source Ċ import Ġio . must el id ae . smooth co ated ot ter . utils . Jack son Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . boot . web . error . Error Attribute Options Ċ import Ġorg . springframework . boot . web . servlet . error . Default Error Attributes Ċ import Ġorg . springframework . core . env . Environment Ċ import Ġorg . springframework . dao . Invalid DataAccess Api Usage Exception Ċ import Ġorg . springframework . http . HttpStatus . BAD _ REQUEST Ċ import Ġorg . springframework . http . HttpStatus . INTERNAL _ SERVER _ ERROR Ċ import Ġorg . springframework . http . HttpStatus . NOT _ FOUND Ċ import Ġorg . springframework . http . HttpStatus . PRE CONDITION _ FAILED Ċ import Ġorg . springframework . http . HttpStatus . UN AUTHORIZ ED Ċ import Ġorg . springframework . validation . FieldError Ċ import Ġorg . springframework . web . bind . Method Argument Not Valid Exception Ċ import Ġorg . springframework . web . bind . annotation . Controller Ad vice Ċ import Ġorg . springframework . web . bind . annotation . ExceptionHandler Ċ import Ġorg . springframework . web . bind . annotation . ResponseBody Ċ import Ġorg . springframework . web . bind . annotation . ResponseStatus Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġorg . springframework . web . context . request . Servlet WebRequest Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ Ċ @ Controller Ad vice ( annotations Ġ= Ġ[ RestController :: class ]) Ċ class ĠException Configuration ( ĊĠĠĠ Ġprivate Ġval Ġenv : ĠEnvironment Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġdeveloper Ġdoes Ġnot Ġknow Ġabout . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ RuntimeException :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( INTERNAL _ SERVER _ ERROR ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle Global Exception ( e : ĠRuntimeException , Ġrequest : ĠHttpServletRequest ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error (" Unexpected Ġerror ", Ġe ) ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , ĠError ( ErrorCode . S 0 0 0 , Ġ" O ops , Ġsomething Ġwent Ġwrong .")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Invalid DataAccess Api Usage Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( INTERNAL _ SERVER _ ERROR ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle Invalid DataAccess Api Usage Exception ( e : ĠInvalid DataAccess Api Usage Exception , Ġrequest : ĠHttpServletRequest ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , ĠError ( ErrorCode . SD 0 1 , Ġe . message !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġpolicy Ġis Ġnot Ġdefined . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ IllegalStateException :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( INTERNAL _ SERVER _ ERROR ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle IllegalStateException ( e : ĠIllegalStateException , Ġrequest : ĠHttpServletRequest ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , ĠError ( ErrorCode . P 0 0 0 , Ġ" O ops , Ġsomething Ġwent Ġwrong .")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDevelopment Ġmist akes Ġdeclared Ġby Ġdevelopers ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Develop M ist ake Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( INTERNAL _ SERVER _ ERROR ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle Develop M ist ake Exception ( e : ĠDevelop M ist ake Exception , Ġrequest : ĠHttpServletRequest ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInvalid Ġinput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ IllegalArgumentException :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( BAD _ REQUEST ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle IllegalArgumentException ( e : ĠIllegalArgumentException , Ġrequest : ĠHttpServletRequest ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ("[ T ] Ġwrong Ġinput .", Ġe ) ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , ĠError ( ErrorCode . HI 0 1 , Ġ" Invalid Ġinput ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Method Argument Not Valid Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( BAD _ REQUEST ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle Method Argument Not Valid Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠMethod Argument Not Valid Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠErrorCode . HI 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . binding Result . field Error ?. default Message Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠErrorCode . HI 0 0 . summary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Communication Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( INTERNAL _ SERVER _ ERROR ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle Communication Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠCommunication Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġhuman Ġerror ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Human Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( BAD _ REQUEST ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġhandle Human Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠHuman Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapplication Ġpolicy ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Policy Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( BAD _ REQUEST ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġpolicy Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠPolicy Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġun authorized ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Un Authorized Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( UN AUTHORIZ ED ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġun Authorized Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠUn Authorized Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġdata Ġnot Ġfound ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Data Not Find Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( NOT _ FOUND ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġdata Not Find Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠData Not Find Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ExceptionHandler ( value Ġ= Ġ[ Precondition Fail Exception :: class ]) ĊĠĠĠ Ġ@ ResponseStatus ( PRE CONDITION _ FAILED ) ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġpre condition Fail Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠPre condition Fail Exception , ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest ĊĠĠĠ Ġ): ĠGlobal Error Format Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerror Form ( request , Ġe , Ġe . error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġerror Form ( request : ĠHttpServletRequest , Ġe : ĠException , Ġerror : ĠError Source ): ĠGlobal Error Format Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Attribute Options Ġ= Ġif Ġ( env . active Profiles . contains (" prod "). not ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Attribute Options . of ( Error Attribute Options . Include . STACK _ TRACE ) ĊĠĠĠĠĠĠĠ Ġelse ĠError Attribute Options . defaults () ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Attributes Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Error Attributes (). getError Attributes ( Servlet WebRequest ( request ), Ġerror Attribute Options ) ĊĊĠĠĠĠĠĠĠ Ġerror Attributes . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" message "] Ġ= Ġerror . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" code "] Ġ= Ġerror . code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" cause By "] Ġ= Ġerror . cause By ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" type "] Ġ= Ġe . java Class . simple Name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJack son . get Mapper (). convert Value ( error Attributes , ĠGlobal Error Format :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress ( ĊĠĠĠĠĠĠĠ Ġ" RECE IVER _ NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ", ĊĠĠĠĠĠĠĠ Ġ" NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS " ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġfun Ġmethod Argument Not Valid Exception Error Form ( errors : ĠList < FieldError >) Ġ= ĊĠĠĠĠĠĠĠ Ġerrors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidationError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġit . field , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrejected Value Ġ= Ġit . rejected Value . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġit . default Message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. toList () ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠValidationError ( ĊĠĠĠĠĠĠĠ Ġval Ġfield : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġrejected Value : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠString ? ĊĠĠĠ Ġ) Ċ } Ċ