找不到请求的资源时在服务器端引发异常是否可以?

客户端收到未找到的404。我担心的是,在这种情况下在服务器端抛出异常是否正常。

最佳答案

很难假设您要对添加到问题中的详细信息级别进行处理。

但是,如果您正确地处理了异常,则该方法可能没有任何问题。看看一些框架使用的方法:

JAX-RS


您可以抛出一个WebApplicationException,它将被映射为一个响应。您可以定义自己的WebApplicationException子类或使用现有的子类。例如,NotFoundException将被映射到带有404状态代码的响应。有关现有异常的更多详细信息,请参考此answer
您也可以创建自己的ExceptionMapper以将任何异常映射到所需的响应。


春季MVC


您可以通过使用@ResponseStatus注释异常类来将异常映射到响应。
它还使您可以实现HandlerExceptionResolver或扩展现有的实现之一,例如AbstractHandlerExceptionResolver
另一种方法是使用用ResponseEntityExceptionHandler注释的@ControllerAdvice并通过用@ExceptionHandler注释实现的方法来定义处理的异常

10-07 19:34
查看更多