こんばんは
お久しぶりです。エキサイト株式会社 中尾です。
最近は趣味でQuarkusを使っています。 本記事ではQuarkusの例外処理について紹介します。
Red Hatの皆様、コメントください、DM待っています。
今回はエラーのハンドリングということで、exceptionのcustom handlerを作っていきます。
ExceptionMapperを継承して、BadRequestExceptionを発生させます。
package org.my.hobby.controller.exception.handler; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @Provider public class BadRequestExceptionHandler implements ExceptionMapper<BadRequestException> { @Override public Response toResponse(BadRequestException e) { return Response.status(Response.Status.BAD_REQUEST). entity(new ErrorMessage(e.getMessage())).build(); } }
package org.my.hobby.controller.exception.handler; import java.io.Serializable; public class BadRequestException extends RuntimeException implements Serializable { private static final long serialVersionUID = 1L; public BadRequestException() { } public BadRequestException(String message) { super(message); } public BadRequestException(String message, Throwable cause) { super(message, cause); } public BadRequestException(Throwable cause) { super(cause); } public BadRequestException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } }
package org.my.hobby.controller.exception.handler; public record ErrorMessage( String message ) { }
これでcontroller内でthrow new BadRequestException("invalid emai");
などで、ErrorMessageを返すことができます。
SpringBootのプラグインを入れたらControllerAdviceも使えますが、使いません(不自由を楽しむのもまた一興)
次回はこっちでやっていきます。