技术开发 频道

Java异常处理的特殊情况分析

  【IT168 技术文档】1、不能在finally块中执行return,continue等语句,否则会把异常“吃掉”;

  2、在try,catch中如果有return语句,则在执行return之前先执行finally块

  请大家下面的例子:

  public class TryTest {   public static void main(String[] args) {   try {   System.out.println(TryTest.test());// 返回结果为true其没有任何异常   } catch (Exception e) {   System.out.println("Exception from main");   e.printStackTrace();   }   doThings(0);   }   public static boolean test() throws Exception {   try {   throw new Exception("Something error");// 第1步.抛出异常   } catch (Exception e) {// 第2步.捕获的异常匹配(声明类或其父类),进入控制块   System.out.println("Exception from e");// 第3步.打印   return false;// 第5步. return前控制转移到finally块,执行完后再返回(这一步被吃掉了,不执行)   } finally {   return true; // 第4步. 控制转移,直接返回,吃掉了异常   }   }   public static void doThings(int i)   {   try   {   if(i==0)   {   //在执行return之前会先执行finally   return;   }   int t=100/i;   System.out.println(t);   }catch(Exception ex)   {   ex.printStackTrace();   }   finally   {   System.out.println("finally");   }   }   }
0
相关文章