我一直在JAVA工作,并在很长一段时间内开发Restful服务。我刚刚完成了服务的开发,现在测试阶段就是进步,这就是问题出现的地方。
究竟发生了什么,以此服务为例:
location = locationFacadeREST.findBy("findByP852", item[i]).get(0);
System.out.println(location);
该声明将返回'项目'从我的数据库中的位置表,如果项目在数据库中可用,它将返回完美数据,但如果不在数据库中则抛出内部服务器异常。
用try try这样处理:
try{
location = locationFacadeREST.findBy("findByP852", item[i]).get(0);
}catch(ArrayIndexOutOfBoundsException e){
output = "Invalid Accession No.";
return output;
}
但我想在100多个文件中实现这一点。 是否有任何方法可以执行此操作并在需要处理异常时调用try catch块。
还请告诉我是否有办法以xml格式返回catch块。
答案 0 :(得分:-1)
您的问题尚不清楚,但我会尽力提供帮助。 (你正在使用什么框架,为什么不使用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);
}
答案 1 :(得分:-1)