`

Try/catch/finally的另一种写法

    博客分类:
  • Java
 
阅读更多

从学习Java以来,只是知道try/catch/finally,从来没有想过,如果顺序换了会出现什么结果。
以前的写法都是先catch,最 后再finally。而这里我们是先finally,再catch。
刚开始以为两种执行顺序都是一样的。不过通过代码试之后才发现不一样。
下 面给出另一种写法的测试代码。
        try{
        try {
            int i=0;
            int d = 10/i;
        }finally{
            System.out.println("finally");
        }
        }catch(Exception e){
            System.out.println("catch");
        }
看到上面代码执行 顺序就想到,如果我们要把资源关闭,在资源抛出异常之前就关闭掉,安全性会不会更好呢。这点没有测过。也不知道虽然顺序不一样,但是效果还是一样的。

在 这里发出来,一是想告诉不知道的人知道这种写法,另外一个目的,是想借问一些知道的人,告诉我,这两种写法,存在 什么差别?谢谢

1
1
分享到:
评论
2 楼 lyndon.lin 2010-05-29  
那如何个两码事?
1 楼 mercyblitz 2010-05-29  
嵌套异常,两码事。

相关推荐

    FileDownload.java

    代码用扫描工具扫出来问题,发现是try-catch-finally的另一种写法try-with-resource,发现这种写法优雅,代码量减少1/3(finally里面不用写close)这样就看的不那么臃肿了。因为上传,下载的时候有可能会创建input ...

    Java try-with-resource语法使用解析

    其次,try-with-resource语法糖会在编译时生成一个隐含的finally块,在finally块中调用资源的close方法以关闭资源。 最后,try-with-resource语法糖可以自动关闭资源, 无需开发者手动编写关闭资源的代码。 try-...

    Java如何优雅地关闭资源try-with-resource及其异常抑制

    在 try-with-resource 语法中,如果在关闭资源时抛出异常,那么这个异常将被抑制,直到当前 try-catch 代码块执行完毕后,才会被抛出。这使得我们可以更好地处理异常。 try-with-resource 语法和异常抑制机制是 ...

    HibernateDAO的写法

    - 单一职责:每个DAO类应只负责一种类型的数据操作,如用户DAO只处理用户相关的操作。 - 可复用:设计通用的方法,如保存(save)、更新(update)、删除(delete)和查询(find)等,以提高代码的复用性。 3. ...

    C#基本写法(适合新手和初学者)

    13. 异常处理:用try...catch...finally结构捕获和处理运行时错误。`throw`关键字用于抛出异常。 九、集合 14. 集合:ArrayList和List用于存储动态数量的元素,Dictionary, TValue>用于键值对存储。 15. 枚举:枚举...

    Java基本语法第三季

    - **try-catch-finally模型**:除了能够处理异常外,还提供了一个`finally`块,该块中的代码无论是否有异常都会被执行。 ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 异常处理代码 } ...

    java 数据库写法(大二)

    在Java编程中,数据库操作是不可或缺的一部分,尤其是在大二阶段,学生通常会开始接触数据库连接和数据操作。这里我们主要探讨Java与MySQL数据库的交互,包括如何连接数据库、执行SQL语句以及配置数据库连接参数。 ...

    浅谈java7增强的try语句关闭资源

    传统上,我们通常使用`try-catch-finally`结构来确保资源的正确关闭,避免资源泄露。然而,这种方式的代码往往显得冗余且降低了代码的可读性。 在Java 7之前,关闭资源的经典方式如下所示: ```java ...

    柱状图和饼图的代码写法

    ### 柱状图与饼图的代码写法——基于JFreeChart库 #### 一、JFreeChart简介 JFreeChart是一款免费的Java图表库,它可以用来创建各种类型的图表,如饼图、柱状图(包括普通柱状图及堆栈柱状图)、线图、区域图、...

    mySQL事务处理

    } 通常都是上述的写法, 在mysql 不支持事务的时候 , 中间的 setAutoCommit 的事务操作是不是都不生效. 现在innoDB支持 事务了, 上述的 java 代码是否能实现 以下的 事务隔离的 操作, 在修改的时候处于锁定状态 ...

    java初级程序员必读

    Java通过`try`, `catch`, `finally`关键字提供异常处理机制。 - **try**:包含可能会抛出异常的代码块。 - **catch**:捕获并处理异常。 - **finally**:无论是否发生异常都会执行的代码块。 示例: ```java try ...

    如何更优雅的关闭java文本、网络等资源

    传统的做法往往涉及繁琐的try-catch-finally结构,使得代码显得冗余且不易阅读。然而,自Java 7起,引入了一种名为“try-with-resources”的语法糖,极大地简化了资源管理,提高了代码的可读性和优雅性。 首先,让...

    各种数据库的JDBC驱动下载及连接字符串URL写法

    另外,为了处理异常和关闭资源,建议使用try-with-resources语句或finally块来确保连接被正确关闭。例如: ```java try (Connection cn = DriverManager.getConnection(url, username, password)) { // 执行数据库...

    JavaScript Promise启示录_.docx

    JavaScript Promise 是一种处理异步操作的方法,旨在解决传统的基于回调函数的异步编程模式所带来的问题,如回调地狱(Callback Hell)或回调金字塔。Promise 的概念起源于 CommonJS 规范,后来被纳入 ES6,成为了...

    Java经典试题.pdf

    `finally`块总是在`try-catch`块结束后执行,无论是否有异常抛出,或者是否遇到`return`语句。所以,尽管`try`块中有`return`,`finally`块仍然会打印出"Finally",因此结果是B。 5. 这道题考察了`try-catch-...

    Net与Java常用代码写法对比.pdf

    在异常处理上,Net 使用 `try-catch-finally`,而 Java 也是相同的结构。在循环方面,两者都支持 `for`、`while` 和 `foreach`,但语法细节上有差异。在集合操作中,Net 有 `List<T>`,Java 有 `ArrayList` 和 `...

    java面试宝典2012版

    Java的异常处理机制是通过try、catch、finally、throws和throw关键字实现的。当程序出现异常时,系统会自动生成一个异常对象,然后系统会查找能处理该异常的catch块来处理异常。如果没有处理异常的catch块,则异常...

    2018中级java工程师面试总结

    - Lambda表达式:提供了一种简洁的匿名函数写法,简化了函数式编程。 - 函数式接口:只有一个抽象方法的接口,如`Runnable`,是Lambda表达式的载体。 - `Optional`类:用于表示可能为`null`的值,避免空指针异常...

    常见的findbugs解决方案

    例如,错误的写法:try {...} catch {...} finally {...} 正确的写法:try {...} catch {...} finally {if (conn != null) {conn.close();}} 8. OSOS_OPEN_STREAM:对流操作之后,应该在 finally 块中对其正确关闭...

Global site tag (gtag.js) - Google Analytics