public Mono handle()

in start/src/main/java/org/apache/rocketmq/eventbridge/handler/ExceptionHandler.java [48:75]


    public Mono<Void> handle(ServerWebExchange exchange, Throwable throwable) {
        ServerHttpResponse serverHttpResponse = exchange.getResponse();
        BaseResponse baseResponse = new BaseResponse();
        HttpStatus httpStatus = null;
        if (throwable instanceof EventBridgeException) {
            EventBridgeException eventBridgeException = (EventBridgeException)throwable;
            baseResponse.setCode(eventBridgeException.getCode());
            baseResponse.setMessage(eventBridgeException.getMessage());
            httpStatus = HttpStatus.resolve(eventBridgeException.getHttpCode());
        } else if (throwable instanceof ResponseStatusException) {
            baseResponse.setMessage(((ResponseStatusException) throwable).getMessage());
            httpStatus = ((ResponseStatusException) throwable).getStatus();
        } else {
            baseResponse.setCode(EventBridgeErrorCode.InternalError.getCode());
            baseResponse.setMessage(EventBridgeErrorCode.InternalError.getMsg());
            httpStatus = HttpStatus.resolve(EventBridgeErrorCode.InternalError.getHttpCode());
            log.error("Catch unexpected exception.", throwable);
        }
        byte[] responseByte = new Gson().toJson(baseResponse)
            .getBytes(StandardCharsets.UTF_8);
        DataBuffer buffer = serverHttpResponse.bufferFactory()
            .allocateBuffer()
            .write(responseByte);
        serverHttpResponse.setStatusCode(httpStatus);
        serverHttpResponse.getHeaders()
            .add(HttpHeaderNames.CONTENT_TYPE.toString(), MediaType.JSON_UTF_8.toString());
        return serverHttpResponse.writeAndFlushWith(Mono.just(ByteBufMono.just(buffer)));
    }