`
trydofor
  • 浏览: 150425 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

必须知道,别滥用-finally

 
阅读更多
public class Test {
    
    public static int testInt() {
        int x = 0;
        try {
            x = 1;
            System.out.println("x=1");
            return x;
        }
        finally {
            x = 2;
            System.out.println("x=2");
        }
    }
    
    public static Ref testRef() {
        Ref ref = new Ref();
        try {
            ref.x = 1;
            System.out.println("x=1");
            return ref;
        }
        finally {
            ref.x = 2;
            System.out.println("x=2");
        }
    }
    
    public static void main(String[] args) {
        System.out.println("x=? " + testInt());
        System.out.println("x=? " + testRef());
    }
    
    private static class Ref {
        private int x;
        public String toString(){
            return String.valueOf(x);
        }
    }
}
分享到:
评论
2 楼 trydofor 2011-04-22  
参考资料
http://supermmx.org/blog/20061109_try_catch_finally
1 楼 trydofor 2011-04-22  
后续跟踪:
使用javap分析finally块中return值
http://blog.csdn.net/aspire_sun/archive/2011/04/22/6340532.aspx

相关推荐

    使用try-catch-finally处理异常

    - 应尽量避免在`catch`块中只简单地忽略异常,除非你清楚地知道忽略不会导致问题。 - 使用异常来处理程序中不寻常的情况,而不要滥用它们进行正常的流程控制。 - 尽量让异常处理代码简洁明了,提供有用的错误信息...

    Java 基础(6-8) - 异常机制详解.pdf

    - 只在不正常的情况下使用异常,避免滥用。 - 在`finally`块中清理资源或使用`try-with-resource`语句。 - 使用标准的异常,避免自定义过多异常类。 - 对异常进行文档说明,提高代码可读性。 - 优先捕获最具体的异常...

    阿里-JAVA最新开发规范

    - try-catch-finally语句中,finally块总是必须的,用于资源清理。 8. **注释规约**: - 代码的自我解释性优于注释,注释应简洁明了,避免无意义的注释。 - 方法和类的上方应当有简短的注释,描述其功能、参数和...

    Java语言编程规范--华为技术有限公司

    - 不滥用`catch (Exception e)`,应尽可能精确地捕获并处理异常。 - 在`finally`块中处理资源释放,如关闭流。 5. **类型与变量** - 避免使用原始类型,优先使用对应的包装类。 - 避免使用`public`全局变量,...

    2024年java面试题-java异常方面的面试题

    - 不要滥用异常处理。 - 尽量捕获具体的异常类型。 - 正确使用`finally`块释放资源。 通过以上内容的深入理解,你可以更好地准备Java面试中关于异常处理的部分,并在实际开发工作中有效地运用这些知识。

    阿里巴巴java开发规范手册-Java.zip

    - finally块必须处理资源关闭,即使在try或catch中有return或throw语句。 - 异常信息应包含异常发生的原因和位置,便于定位问题。 5. **并发编程**: - 尽量避免使用wait/notify,推荐使用高级并发API如...

    .NET Windows编程系列课程(30):错误和异常处理

    异常不应该被滥用作为流程控制手段。它们应保留为表示异常或错误条件的信号。过度使用异常处理可能会降低程序性能,因为抛出和捕获异常都需要一定的开销。 在设计错误处理策略时,应考虑以下几点: 1. 预防优于治疗...

    超级详细的讲解Java异常ppt,带你深入了解Java异常

    `throws`关键字用于在方法签名中声明可能抛出的异常,这意味着调用该方法的代码必须处理这些异常。例如: ```java public void readFile() throws FileNotFoundException { // 读取文件的代码,可能抛出...

    Java编码规范.doc_java_doc_

    - try-catch-finally:妥善处理异常,finally块用于资源清理。 - 不滥用`catch (Exception e)`,尽可能捕获特定类型的异常。 5. **控制结构** - 避免冗余的if语句,提倡使用三元运算符或switch-case。 - 使用...

    Java异常应用指导.docx

    2. **避免滥用异常:**异常是用来处理程序中非常规流程的方式,不应作为常规流程的控制手段。 3. **自定义异常:**根据应用需求自定义异常类型,提高异常信息的可读性和可维护性。 4. **适当使用`throw`关键字:**在...

    Java 解惑(细致实用)

    理解如何工作,何时触发GC,以及如何避免内存泄漏是每个Java开发者必须掌握的知识。 - 常见问题包括过度使用静态变量可能导致内存无法释放,以及对对象引用不当造成的内存泄露。 2. **异常处理** - Java的异常...

    JAVA编程规范学习

    - 多行注释以`/* */`包围,用于提供较详细的描述,但不应过多,避免滥用。 - Javadoc注释以`/** */`包围,用于生成API文档,格式为`@param`, `@return`, `@throws`等。 3. 缩进与空格: - 使用4个空格进行缩进,...

    java编程中异常处理的优劣观

    这一机制通过try-catch-finally语句块来实现,为开发者提供了优雅地处理异常情况的方式。 首先,我们来看一下Java异常处理的优点: 1. **提高程序的健壮性**:通过捕捉和处理异常,程序可以继续执行,而不是因为一...

    阿里巴巴Java开发手册(2019年详尽版).rar

    - 不鼓励空异常处理,避免`try-catch-finally`块中只包含`return`语句。 - 打印堆栈跟踪信息以帮助定位问题,如`e.printStackTrace()`。 4. **设计原则**: - 遵循SOLID原则:单一职责、开闭原则、里氏替换、...

    C#开发规范文档

    - **规则**:编程时必须严格遵守的规定。 - **建议**:编程时应考虑的约定。 - **说明**:对规则或建议的具体解释。 - **正例**:展示正确实践的例子。 - **反例**:展示错误实践的例子。 #### 三、基本原则 - **易...

    JAVA编码通用规范

    - 使用`try-catch-finally`语句块,`finally`块用于资源清理。 7. **访问控制** - 尽可能限制类和方法的访问级别,避免过度公开。 8. **包导入** - 避免导入整个包,尽可能导入具体类。 - 使用`import static`...

    阿里巴巴Java开发手册(终极版)

    - 使用`try-catch-finally`语句块,确保资源的正确关闭。 - 不应捕获所有异常,而应尽可能定位并处理特定异常。 - 异常信息应包含足够的上下文信息,便于问题定位。 5. **集合使用**: - 优先使用`List`、`Set`...

    java开发常遇问题和解决

    - 原因:滥用反射可能导致安全风险和性能下降。 - 解决方案:限制反射的使用,使用注解和配置文件来控制权限,确保反射操作的安全性。 10. **JDBC操作问题** - 原因:连接池管理不当,SQL编写错误,资源没有正确...

Global site tag (gtag.js) - Google Analytics