使用Excel
导入数据的时候,避免不了校验数据这个过程,在使用EasyExcel
进行数据校验的时候,在AnalysisEventListener
中抛异常要使用ExcelAnalysisException
而不是自己定义的运行时异常,EasyExcel
会捕捉所有的非ExcelAnalysisException
异常并封装成ExcelAnalysisException
抛出,如下。
private void onException(AnalysisContext analysisContext, Exception e) {
for (ReadListener readListenerException : analysisContext.currentReadHolder().readListenerList()) {
try {
readListenerException.onException(e, analysisContext);
} catch (RuntimeException re) {
throw re;
} catch (Exception e1) {
throw new ExcelAnalysisException(e1.getMessage(), e1);
}
}
}
这样的话,给用户的提示就会有多余的错误信息,对用户来说是不友好的。
除此之外,还要记得在全局异常处理器中加入ExcelAnalysisException
的拦截,这样才会给用户提示你想要提示的信息
@ExceptionHandler(value = {ExcelAnalysisException.class})
public R<Void> handlerExcelAnalysisException(HttpServletRequest request, ExcelAnalysisException e) {
log.warn(request.getRequestURI(), e);
return R.error(e.getMessage());
}