当前位置: 首页 > 知识库问答 >
问题:

Spring Jpa存储库引发的异常未被异常处理程序@Controller通知捕获

毋琪
2023-03-14

下面是我在Spring boot中的ExceptionHandler类

@RestControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {


@ExceptionHandler({InvalidRequestException.class, PropertyReferenceException.class})
public final ResponseEntity<ExceptionDetails> handleInvalidRequestException(InvalidRequestException ex, WebRequest request) {
    ExceptionDetails details = new ExceptionDetails(ex.getMessage(),request.getDescription(false), new Date());
    return new ResponseEntity<ExceptionDetails>(details, HttpStatus.BAD_REQUEST);

}
@Override
public Page<Segment> listSegment(int pageNum, int size, String sortBy, String direction, String app) {
        log.info("Starting to query the segment list");
        Pageable pageable = createPageRequest(size, pageNum, sortBy, direction);
        Pageable pageable = new PageRequest(page, size, dir, sortBy);
        Page<Segment> resultPage = segmentRepository.findByApp(app,pageable);
        if(pageNum > resultPage.getTotalPages() || resultPage.getContent().isEmpty()) {
            log.info("No segment present");
            throw new ResourceNotFoundException("No Segment Present");
        }

        log.info("Total segment successfully fetched is: "+resultPage.getContent().size());
        if(resultPage.hasNext())
            return new Page<>(resultPage.getContent(), true);
        else
            return new Page<>(resultPage.getContent());
    }

共有1个答案

汪鸿志
2023-03-14

问题是以下行之间不匹配:@exceptionHandler({InvalidRequestException.class,PropertyReferenceException.class})&方法签名HandleInvalidRequestException(InvalidRequestException ex,WebRequest request)

您将此方法注释为处理两个异常,但在方法参数中只指定了一个异常&该异常是一个非常特殊的异常,因此为InvalidRequestException调用该异常。如果希望两个异常都匹配到相同的方法,则方法参数必须是两个异常的父类。

您要么需要按照slimane的回答更改方法,要么有两个处理程序方法--每个异常一个。

(&A)

@ExceptionHandler({PropertyReferenceException.class})handlePropertyReferenceException(PropertyReferenceException ex,WebRequest request)

 类似资料:
  • 本节介绍如何使用三个异常处理程序组件(try、catch 和 finally)来编写异常处理程序。 然后,介绍了 Java SE 7中引入的 try-with-resources 语句。 try-with-resources 语句特别适合于使用Closeable的资源(例如流)的情况。 本节的最后一部分将通过一个示例来分析在各种情况下发生的情况。 以下示例定义并实现了一个名为ListOfNumbe

  • 问题内容: 我有一个应用程序,需要编写一个自定义的全局未捕获的异常处理程序。我已经阅读了所有stackoverflow线程,并且其中每个线程都只是缺少一个清晰而简单的示例,说明了如何实现这一点。 考虑以下简单示例: 它抛出一个标准异常,它只是一个标准输出。我如何实现自己的异常,该异常可以通过将错误输出到日志文件中的简单方法覆盖标准异常?显然,实际的应用程序要大得多,我们正在谈论未捕获的异常,这就是

  • 问题内容: 因此,在此桌子上,我一直将头撞在桌子上几个小时,而且我什么都没走,因此我们将不胜感激。 下面的代码有两个jquery事件处理程序,它们会触发ajax请求。第一个使用GET,并且从服务器返回的数据是JSON编码的-它工作正常。返回的第二个(“ button#addTx”)使Firebug产生此错误: 未捕获的异常:[异常…“提示被用户终止” nsresult:“ 0x80040111(N

  • 我正在尝试创建一个过滤器来处理异常(请参见在JSF中处理未捕获的异常) 我在日志中看到错误: 我做错了什么?

  • 我的RMI服务器接口声明了一个方法foo(),该方法被声明为引发RemoteException和Exception,如下所示: 服务器实现为: 我的客户端在服务器上调用foo: 现在,当我运行客户端时,我得到: 从java类型的foo()中获取异常。rmi。异常异常:未声明的检查异常;嵌套的例外是:java。伊奥。InterruptedIOException:操作超时 Java文档是这样说的。rm

  • 1.1 异常处理的基本使用 try: <语句块1> except: <语句块2> try 捕获异常 except 发生异常时执行 try: <语句块1> except <异常类型名字>: <语句块2> except <异常类型名字> 发生对应异常时才会执行 1.2 异常处理的高级使用 try: <语句块1> except