`

异常 之 finally的特殊处理

    博客分类:
  • J2SE
 
阅读更多
http://java.chinaitlab.com/experience/860321_2.html

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”);
  }
  }
  }
分享到:
评论

相关推荐

    10道Java常见异常面试题含答案(很全)

    在Java中,异常(Exception)是一种特殊的对象,表示程序运行过程中出现的问题。Java提供了很多内置的异常类,例如NullPointerException、IndexOutOfBoundsException等。此外,程序员也可以创建自定义的异常类。 ...

    【Java】异常类体系及异常处理

    异常的处理方式:try-catch-finally 1. 异常概念 概念:程序在运行过程中出现的特殊情况 必要性:任何程序都可能存在大量的位置问题、错误;如果不对这些问题进行正确处理,则可能导致程序的中断,造成不必要的损失...

    JSTL详细标签库介绍

    更特殊类来专门处理除数为零的异常。在DivideByZeroException()中调用super()(专门初始化传如参数的方法)来传如异常处理后对象描述(初始状态)<BR>2、 第一步,创建一个Applet类完成完成两数相除的计算<BR>3...

    Java异常处理中的一些特殊情况举例

    主要介绍了Java异常处理中的一些特殊情况举例,分别是只用try和finally不用catch,以及finally语句不被执行的情况,需要的朋友可以参考下

    zadlab10-RomanMusijowski:GitHub Classroom创建的zadlab10-RomanMusijowski

    OOPL10 例外情况 异常是程序运行时发生的异常情况。 没有异常处理机制的语言需要手动检测和处理错误-大多数情况下是通过错误代码...下面是一个try / catch / finally语句块,用于处理三种类型的异常: try { // b

    zadlab10-michalwiciak:GitHub Classroom创建的zadlab10-michalwiciak

    OOPL10 例外情况 异常是程序运行时发生的异常情况。 没有异常处理机制的语言需要手动检测和处理错误-大多数情况下是通过错误代码...下面是一个try / catch / finally语句块,用于处理三种类型的异常: try { // b

    zadlab10-monte19977:zadlab10-monte19977由GitHub Classroom创建

    它捕获某些异常并以某种方式处理它们扔-信号已发生指定的异常throws-定义给定方法可以抛出哪些异常最终-必须在给定方法结束之前执行的语句块下面是一个try / catch / finally语句块,用于处理三种类型的异常: try ...

    zadlab10-pitrekx97:GitHub Classroom创建的zadlab10-pitrekx97

    它捕获某些异常并以某种方式处理它们扔-信号已发生指定的异常throws-定义给定方法可以抛出哪些异常最终-必须在给定方法结束之前执行的语句块下面是一个try / catch / finally语句块,用于处理三种类型的异常: try ...

    zadlab10-Suegro:zadlab10-Suegro由GitHub Classroom创建

    它捕获某些异常并以某种方式处理它们扔-信号已发生指定的异常throws-定义给定方法可以抛出哪些异常最终-必须在给定方法结束之前执行的语句块下面是一个try / catch / finally语句块,用于处理三种类型的异常: try ...

    zadlab10-filips1:zadlab10-filips1由GitHub Classroom创建

    OOPL10 例外情况 异常是程序运行时发生的异常情况。 没有异常处理机制的语言需要手动检测和处理错误-大多数情况下是通过错误代码...下面是一个try / catch / finally语句块,用于处理三种类型的异常: try { // b

    zadlab10-x4nters:GitHub Classroom创建的zadlab10-x4nters

    它捕获某些异常并以某种方式处理它们扔-信号已发生指定的异常throws-定义给定方法可以抛出哪些异常最终-必须在给定方法结束之前执行的语句块下面是一个try / catch / finally语句块,用于处理三种类型的异常: try ...

    zadlab10-ns2384:zadlab10-ns2384由GitHub Classroom创建

    OOPL10 例外情况 异常是程序运行时发生的异常情况。 没有异常处理机制的语言需要手动检测和处理错误-大多数情况下是通过错误代码...下面是一个try / catch / finally语句块,用于处理三种类型的异常: try { // b

    zadlab10-hubertj6:zadlab10-hubertj6由GitHub Classroom创建

    OOPL10 例外情况 异常是程序运行时发生的异常情况。 没有异常处理机制的语言需要手动检测和处理错误-大多数情况下是通过错误代码...下面是一个try / catch / finally语句块,用于处理三种类型的异常: try { // b

    zadlab10-chrisvelo:zadlab10-chrisvelo由GitHub Classroom创建

    OOPL10 例外情况 异常是程序运行时发生的异常情况。 没有异常处理机制的语言需要手动检测和处理错误-大多数情况下是通过错误代码...下面是一个try / catch / finally语句块,用于处理三种类型的异常: try { // b

    46个java关键字介绍和使用大全含示例(值得珍藏)

    这些关键字包括数据类型关键字(如int、float、char等)、流程控制关键字(如if、else、while等)、访问控制关键字(如public、private、protected等)、异常处理关键字(如try、catch、finally等)以及其他一些特殊...

    python简明教程.chm

    说明:解压后要注意把文件属性修改一下,解锁即可用 目录表 前言 本书的读者 本书的由来 本书目前的状况 ...13.1 处理异常 13.2 如何引发异常 14.1 使用sys.argv 15.1 使用列表综合 15.2 使用lambda形式

    简明python教程(chm)

    目录表 前言 本书的读者 本书的由来 本书目前的状况 官方网站 约定条款 欢迎给我反馈 值得思考的一些东西 ...13.1 处理异常 13.2 如何引发异常 14.1 使用sys.argv 15.1 使用列表综合 15.2 使用lambda形式

    简明python教程

    目录表 前言 本书的读者 本书的由来 本书目前的状况 官方网站 约定条款 欢迎给我反馈 值得思考的一些东西 ...13.1 处理异常 13.2 如何引发异常 14.1 使用sys.argv 15.1 使用列表综合 15.2 使用lambda形式

    Python简明教程

    处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 14. Python标准库 简介 sys模块 命令行参数 更多sys的内容 os模块 概括 15. 更多Python的内容 特殊的方法 单语句块 列表综合 使用列表综合 在...

    修改过的适合Delphi7的GifImage程序(经多线程测试)

    因此特别做了特殊的判断和处理。 在调用时,需要特别注意。 var gif: TGifImage; image: TImage; aFileName: String; // 图片文件名称 begin .... gif := TGIFImage.Create; try gif.LoadFromFile(aFileName...

Global site tag (gtag.js) - Google Analytics