首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 笔记本电脑 | 北大青鸟 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> 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. }
【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·算法分析与设计之五大常用算法
 ·开发必备 漫谈Java加密保护
 ·嵌入式开发--ARM技术专题
 ·C/C++指针,认真了解,灵活运用
 ·.NET开发:C#实用基础教程
 ·软件测试工具QTP学习专题
 ·嵌入式开发单片机解决方案专题
 ·Java开发环境 Greenfoot 程序员手册
 ·C++对象布局及多态实现的探索
 ·常见排序算法的实现
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航