服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java编程中异常处理的特殊情况

1、不能在finally块中执行return,continue等语句,否则会把异常“吃掉”;
2、在try,catch中如果有return语句,则在执行return之前先执行finally块
 
请大家下面的例子:

  1. public class trytest {
  2.     public static void main(string[] args) {
  3.         try {
  4.             system.out.println(trytest.test());// 返回结果为true其没有任何异常
  5.         } catch (exception e) {
  6.             system.out.println("exception from main");
  7.             e.printstacktrace();
  8.         }
  9.         dothings(0);
  10.     }
  11.     public static boolean test() throws exception {
  12.         try {
  13.             throw new exception("something error");// 第1步.抛出异常
  14.         } catch (exception e) {// 第2步.捕获的异常匹配(声明类或其父类),进入控制块
  15.             system.out.println("exception from e");// 第3步.打印
  16.             return false;// 第5步. return前控制转移到finally块,执行完后再返回(这一步被吃掉了,不执行)
  17.         } finally {
  18.             return true// 第4步. 控制转移,直接返回,吃掉了异常
  19.         }
  20.     }
  21.     
  22.     public static void dothings(int i)
  23.     {
  24.      try
  25.      {
  26.       if(i==0)
  27.       {
  28.        //在执行return之前会先执行finally
  29.        return;
  30.       }
  31.       int t=100/i;
  32.       system.out.println(t);
  33.      }catch(exception ex)
  34.      {
  35.       ex.printstacktrace();
  36.      }
  37.      finally
  38.      {
  39.       system.out.println("finally");
  40.      }
  41.     }
  42. }

扫描关注微信公众号