找不到请求的资源时在服务器端引发异常是否可以?
客户端收到未找到的404。我担心的是,在这种情况下在服务器端抛出异常是否正常。
最佳答案
很难假设您要对添加到问题中的详细信息级别进行处理。
但是,如果您正确地处理了异常,则该方法可能没有任何问题。看看一些框架使用的方法:
JAX-RS
您可以抛出一个WebApplicationException
,它将被映射为一个响应。您可以定义自己的WebApplicationException
子类或使用现有的子类。例如,NotFoundException
将被映射到带有404
状态代码的响应。有关现有异常的更多详细信息,请参考此answer。
您也可以创建自己的ExceptionMapper
以将任何异常映射到所需的响应。
春季MVC
您可以通过使用@ResponseStatus
注释异常类来将异常映射到响应。
它还使您可以实现HandlerExceptionResolver
或扩展现有的实现之一,例如AbstractHandlerExceptionResolver
。
另一种方法是使用用ResponseEntityExceptionHandler
注释的@ControllerAdvice
并通过用@ExceptionHandler
注释实现的方法来定义处理的异常