业务场景:
最近在工作中,遇到同步第三方接口数据,由于数据量巨大,且有多个厂商都在访问第三方的接口进行数据同步,导致第三方同步接口经常报连接异常,使我们程序挂掉,程序再次运行则会从头开始,循环往复,每次程序都会从头开始。
解决方法:
在Java中,捕获异常后继续执行可以通过使用
try-catch-finally
语句实现。在try
块中执行可能抛出异常的代码,在catch
块中捕获并处理异常,而finally
块中的代码无论是否发生异常都会被执行。
注意:
实际项目当中,还会将同步好的数据进入库记录(或者专门创建一张表对已入库数据进行id记录),这样发生异常后,再次调用方法。会将数据库当中的数据与同步的数据进行比对,数据已经同步则不需要再同步。 大大减少了同步时间。
伪代码实现:
public class ExceptionContinueExecution {
public static void main(String[] args) {
try {
// 可能会抛出异常的代码
method();
} catch (Exception e) {
// 异常处理
e.printStackTrace();
} finally {
// 发生异常再次自动执行方法
method();
System.out.println("这里是finally块,无论是否发生异常都会执行。");
}
}
//自己代码的实现逻辑
private static void method() throws Exception {
//进行数据同步拉取
//循环,判断每条数据是否同步
//......
// 示例代码,抛出一个异常
throw new Exception("一个示例异常");
//.......
//如果代码正常运行到最后,对同步数据进行入库记录
}
}