JAVA 中 RESTful 服务中的异常处理



我一直在JAVA工作,并且已经开发了很长一段时间的Restful服务。我刚刚完成了服务开发,现在测试阶段正在进行中,这就是问题出现的地方。

究竟发生的事情是,以这项服务为例:

    location = locationFacadeREST.findBy("findByP852", item[i]).get(0); 
    System.out.println(location);

该语句将从我的数据库中的位置表中返回"item",如果项目在数据库中可用,它将返回完美的数据,但如果不在数据库中,则会引发内部服务器异常。

像这样尝试捕获来处理它:

try{               
    location = locationFacadeREST.findBy("findByP852", item[i]).get(0); 
       }catch(ArrayIndexOutOfBoundsException e){
           output = "Invalid Accession No.";
           return output;               
       }

但是我想在 100 多个文件中实现这一点。是任何方法可以执行一次并在我需要处理异常时调用 try catch 块。

并且还请告知是否有任何方法可以返回xml格式的捕获块。

你的问题不清楚,但我会尽力提供帮助。(你正在使用什么框架,为什么不使用try catch块或一些本机拦截器(。如果您使用的是 spring 框架,请查看全局异常处理程序的实现,请使用控制器建议。这应该行得通;

@Slf4j
public abstract class GlobalExceptionHandler {
    ResponseEntity<Object> handleException(WebRequest request, String message, int httpStatusCode)
            throws IllegalArgumentException
    {
        String exceptionMessage = "Exception occured while system is running.";
        if (message != null)
        {
            exceptionMessage = message;
        }
        ErrorResource error = new ErrorResource(correlationId, exceptionMessage);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpStatus annotation = HttpStatus.valueOf(httpStatusCode);
        log.error(
                "Exception message = {} and Http Status code = {}",
                exceptionMessage,
                httpStatusCode);
        return new ResponseEntity<>(error, headers, annotation);
    }
}

但是这个班级需要从@ControllerAdvice班打电话。

@ExceptionHandler(Exception.class)
public ResponseEntity<Object> handleAllException(WebRequest request, Exception ex) {
    return handleException(request, ex.getMessage(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}

您可以使用@RestControllerAdvice从图层全局处理Controller异常

只需要实现预期异常的处理程序方法。

您可以在此处找到详细的异常处理帖子

相关内容

  • 没有找到相关文章

最新更新