我一直在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
异常
只需要实现预期异常的处理程序方法。
您可以在此处找到详细的异常处理帖子