import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Optional;
import java.util.function.Supplier;
public class ExceptionHelper {
private final static Logger log = LoggerFactory.getLogger(ExceptionHelper.class);
private final static String ERROR_STR = "[ExceptionHelper]执行方法报错";
public static <T> Optional<T> execute(Supplier<T> tryHandle) {
return execute(tryHandle,()->{}, ()->{});
}
public static void execute(Runnable tryHandle) {
execute( tryHandle,()->{}, ()->{});
}
public static <T> Optional<T> execute(Supplier<T> tryHandle,Runnable finalHandle) {
return execute(tryHandle,()->{}, finalHandle);
}
public static void execute(Runnable tryHandle,Runnable finalHandle) {
execute( tryHandle,()->{}, finalHandle);
}
public static <T> Optional<T> execute(Supplier<T> tryHandle,Runnable catchHandle,Runnable finalHandle) {
Optional<T> optional = Optional.empty();
try {
optional= Optional.ofNullable(tryHandle.get());
} catch (Exception e) {
errorLog(ERROR_STR, e);
catchHandle.run();
return optional;
}finally {
finalHandle.run();
}
return optional;
}
public static void execute(Runnable tryHandle,Runnable catchHandle,Runnable finalHandle) {
try {
tryHandle.run();
} catch (Exception e) {
errorLog(ERROR_STR, e);
catchHandle.run();
}finally {
finalHandle.run();
}
}
private static void errorLog(String msg, Exception e) {
log.info(msg, e);
log.error(msg, e);
}
}
使用
public List<BusChargeRecordVO> ChargingRecord() {
return ExceptionHelper.execute(()->{
QueryWrapper<BusChargeRecordVO> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc(true, "charge_end_time");
queryWrapper.last("limit 5");
return busChargeRecordDao.selectList(queryWrapper);
}).orElse(new ArrayList<>());
}