小编Jay*_*Jay的帖子

自定义异常类 - 从Exception或Thowable扩展?

我正在为我的应用程序设计一个自定义的Exception类.我有一个非常基本的问题.我应该从Exception类还是Thowable类扩展?有什么好处?

我打算从底层层中抛出它并在顶层类中捕获它.它会影响我使用Thowable over Exception的决定吗?抓住Thowable是否从根本上说是正确的?

我在这个论坛中经历过其他一些话题.他们谈论在抛出堆栈跟踪时保持堆栈跟踪而没有异常等等.我理解有人说(这里)Thowable是Exception的超级类,我们不应该使用它.但是其他人(这里)说Exception是针对"例外"的案例.

这个问题相当于讨论一个人如何比其他人更好而不是问如何.

java exception-handling

17
推荐指数
1
解决办法
1万
查看次数

将错误消息从SSE(Webflux)Spring Boot应用传递到Angular 7前端

我的应用程序是一个具有多个端点的Spring Boot应用程序。我们正在尝试使用Webflux添加启用SSE的端点。

用例:

步骤1:前端向POST端点提交请求,并获得唯一的ID。

步骤2:前端使用GET端点获取处理的结果(启用SSE-Flux)

Angular使用EventSource对象来使用SSE端点。它需要端点来产生文本/事件流。它对于肯定的测试用例非常有效。但是,当从服务中抛出运行时异常时,Angular前端将无法获取HTTP状态代码和异常详细信息。只是没有数据的错误。

抛出异常:

@ResponseStatus(code = HttpStatus.NOT_FOUND)
public class RequestNotFoundException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public RequestNotFoundException(String message) {
        super(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

本节所述,返回a Flux<ServerSentEvent>并以自定义事件终止通量:

Java端点

 @GetMapping(path= "{id}/async", produces=MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<Optional<ProcessedResult>>> getProcessedResultStream(
        @PathVariable("id") @ApiParam(value = "The unique identifier of the request", required = true) String id)
        throws InterruptedException {
    // Combining data and adding a disconnect event to handle at the frontend.
    return Flux.concat(
            Flux.just(ServerSentEvent.<Optional<ProcessedResult>>builder(service.getProcessedResult(id))
                    .build()),
            Flux.just(ServerSentEvent.<Optional<ProcessedResult>>builder().event("disconnect").build()));
}
Run Code Online (Sandbox Code Playgroud)

这有助于通过断开连接来在UI端关闭连接。但是我的主要问题仍然悬而未决。我应该如何将错误消息传播回前端?所有其他(正常)终结点都会使用上述正确的HTTP代码引发自定义运行时异常。

我是否也应该更改ProcessedResult类以获取异常详细信息?

java server-sent-events spring-boot spring-webflux angular

7
推荐指数
1
解决办法
324
查看次数