应用场景:当我们使用带资源的try语句时,使用finally也许会造成一个异常被覆盖的问题,即try语句块中会抛出某个异常,执行finally语句块中跑出了同样的异常,这样的话就会导致原有的异常会丢失,转而抛出的finally语句中的异常。这时我们可以使用带资源的try语句来处理(前提是这个资源实现了AutoCloseable接口的类)
格式如下:括号中可以写多行语句,会自动关闭括号中的资源
try(Resource res = ...) {
//TODO:res run
}
try (FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader read = new InputStreamReader(fileInputStream, "GBK");
BufferedReader bufferedReader = new BufferedReader(read);) {
if (file.isFile() && file.exists()) { //判断文件是否存在
lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {
reaportParam = JacksonUtils.jsonStrToObj(lineTxt, ReportParam.class);
return reaportParam;
}
} else {
logger.info("找不到指定的上报结果文件");
}
} catch (Exception e) {
logger.error("读取文件内容出错", e);
}