在最近项目中出现了一个数据加载于数据库信息延迟的问题,通过检查,发现问题就在return与try语句结合使用时出现问题,导致后台的缓存类一直没有去调用数据库的最新数据,特此留下印记。
在java语句中,return的最基本的含义就是返回一个结果值,但实际上return也包含了一个break的作用,并且它是跳出整过方法而非循环。
比如:
public void testReturn(){
String message="Test return";
if(message!=null)
return ;
System.out.println(message);
}
这样一个方法。这个方法的执行过程中,是不会讲message的信息输出的,因为message不可能为Null,那么方法就会执行return;语句,在执行后,系统就会跳出testReturn()方法。
try{}catch(Exception e){}finally{} 语句很容易理解,就是执行try里面的语句后,在最后执行finally包含的语句,如果在执行过程中存在异常,将会执行catch中的语句,最后仍然会执行finally中的语句。
return与try{}catch(Exception e){}finally{}的用法都不是重点,重点是在二者结合使用时。
当try{}catch语句中,包含有return执行语句时,在执行return之前会执行try{}catch语句的finally语句,然后再执行return语句。
比如:
public void testReturnAndTry(){
try{
String message="Test return";
if(message!=null)
return ;
System.out.println(message);
}catch(Exception e){
//异常处理语句
}finally{
System.out.println("testReturnAndTry");
}
在工作台中,只会输出testReturnAndTry,而不会输出message的数据。