package Ġpers . ac p . spring . boot . exceptions Ċ Ċ import Ġorg . springframework . beans . Type Mismatch Exception Ċ 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 . Method Argument Not Valid Exception Ċ import Ġorg . springframework . web . bind . Missing Servlet Request Parameter Exception Ċ 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 Ċ import Ġpers . ac p . spring . boot . enums . Response Code Ċ import Ġpers . ac p . spring . boot . tools . Package Tools Ċ import Ġpers . ac p . core . exceptions . EnumValue Undefined Exception Ċ import Ġpers . ac p . spring . boot . interfaces . Log Adapter Ċ Ċ import Ġjavax . validation . Constraint Violation Exception Ċ Ċ /** Ċ Ġ* ĠCreate Ġby Ġz hang bin Ġon Ġ 2 0 1 7 - 8 - 1 0 Ġ 1 6 : 2 6 Ċ Ġ*/ Ċ @ Controller Ad vice Ċ class ĠRest ExceptionHandler ( private Ġval Ġlog Adapter : ĠLog Adapter ) Ġ: ĠResponseEntity ExceptionHandler () Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġdo Log ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Adapter . error ( ex . message , Ġex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ èĩªå®ļä¹ī å¼Ĥå¸¸ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġex Ġ å¼Ĥå¸¸ ç±» ĊĠĠĠĠ Ġ* Ġ@ return Ġ åĵįåºĶ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ExceptionHandler ( Server Exception :: class , ĠConstraint Violation Exception :: class ) ĊĠĠĠ Ġfun Ġhandle Server Exception ( ex : ĠException ): ĠResponseEntity < Any > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Log ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ex Ġis ĠServer Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Code . get Enum ( ex . code Ġ?: Ġ 9 9 9 9 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ex Ġis ĠConstraint Violation Exception Ġ|| Ġex Ġis ĠMethod Argument Not Valid Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Code . Invalid Parameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Code . Other Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠEnum Value Undefined Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Code . Other Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity . status ( HttpStatus . BAD _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Package Tools . build ErrorResponse Package ( it , Ġex . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ ĠMethod Argument Not Valid Exception Ġ å¼Ĥå¸¸ ï¼Į åıĤæķ° æł¡éªĮ ä¸į éĢļè¿ĩ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġex ĠĠĠĠĠ ĠMethod Argument Not Valid Exception ĊĠĠĠĠ Ġ* Ġ@ param Ġheaders Ġè¯·æ±Ĥ å¤´ ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Ġ Ġè¯·æ±Ĥ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Ġè¯·æ±Ĥ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġ åĵįåºĶ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġhandle Method Argument Not Valid ( ex : ĠMethod Argument Not Valid Exception , Ġheaders : ĠHttp Headers , Ġstatus : ĠHttpStatus , Ġrequest : ĠWeb Request ): ĠResponseEntity < Any > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . binding Result . all Errors . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Log ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Msg Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġerror Ġ-> Ġerror Msg . append ( error . default Message ). append ("; ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity . status ( HttpStatus . BAD _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Package Tools . build ErrorResponse Package ( Response Code . Invalid Parameter , Ġerror Msg . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ @ RequestParam éĶĻè¯¯ , Ġ åį³ åıĤæķ° ä¸į è¶³ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġex ĠĠĠĠĠ Ġ å¼Ĥå¸¸ ç±» ĊĠĠĠĠ Ġ* Ġ@ param Ġheaders Ġè¯·æ±Ĥ å¤´ ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Ġ Ġè¯·æ±Ĥ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Ġè¯·æ±Ĥ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġ åĵįåºĶ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġhandle Missing Servlet Request Parameter ( ex : ĠMissing Servlet Request Parameter Exception , Ġheaders : ĠHttp Headers , Ġstatus : ĠHttpStatus , Ġrequest : ĠWeb Request ): ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Log ( ex ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . INTERNAL _ SERVER _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Package Tools . build ErrorResponse Package ( Response Code . Invalid Parameter , Ġex . message )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ åıĤæķ° ç±»åŀĭ è½¬æį¢ å¤±è´¥ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġex ĠĠĠĠĠ Ġ å¼Ĥå¸¸ ç±» ĊĠĠĠĠ Ġ* Ġ@ param Ġheaders Ġè¯·æ±Ĥ å¤´ ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Ġ Ġè¯·æ±Ĥ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Ġè¯·æ±Ĥ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġ åĵįåºĶ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġhandle Type Mismatch ( ex : ĠType Mismatch Exception , Ġheaders : ĠHttp Headers , Ġstatus : ĠHttpStatus , Ġrequest : ĠWeb Request ): ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Log ( ex ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . INTERNAL _ SERVER _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Package Tools . build ErrorResponse Package ( Response Code . Invalid Parameter , Ġex . message )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ éĢļ çĶ¨ å¼Ĥå¸¸ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġex ĠĠĠĠĠ Ġ å¼Ĥå¸¸ ç±» ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠĠĠ Ġ åįıè®® ä½ĵ ĊĠĠĠĠ Ġ* Ġ@ param Ġheaders Ġè¯·æ±Ĥ å¤´ ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Ġ Ġè¯·æ±Ĥ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Ġè¯·æ±Ĥ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġ åĵįåºĶ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġhandle Exception Internal ( ex : ĠException , Ġbody : ĠAny ?, Ġheaders : ĠHttp Headers ?, Ġstatus : ĠHttpStatus , Ġrequest : ĠWeb Request ): ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Log ( ex ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . INTERNAL _ SERVER _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Package Tools . build ErrorResponse Package ( Response Code . Other Error , Ġex . message )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ