java - java中的无痛资源管理

标签 java resources

在 C++ 中,我们在构造函数中获取资源并在析构函数中释放它。

因此,当异常在函数中间出现时,不会发生资源泄漏或互斥锁锁定等情况。

据我所知,Java 类没有析构函数。那么如何在 Java 中进行资源管理。

例如:

public int foo() {    
    Resource f = new Resource();
    DoSomething(f);
    f.Release();
}

如果 DoSomething 抛出异常,如何释放资源?我们不能在整个代码中放置 try\catch block ,对吗?

最佳答案

是的,您可以而且应该在您的代码周围放置 try/catch/finally block 。在 C# 中有一个简写的“using”语句,但在 Java 中你会被困在:

public int foo() {
    Resource f = new Resource();
    try {
        DoSomething(f);
    }
    finally {
        f.Release();
    }
}

关于java - java中的无痛资源管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547/

相关文章:

java - 在树莓派上使用带有 Java 的 sqlite

silverlight - 尝试使用 ResourceDictionary,但其中的样式未找到

resources - 现实生活中有用和无用的开发技术

Java,显示从jar中的资源加载的chm文件

java - 无法从 jar 加载资源文件

java - Spring 数据 REST HATEOAS : not lazy loading

java - 如何使用 while 循环让骰子重新掷骰子,直到它达到 "point"(骰子)?

java - JNI 不满意链接错误?

java - G1GC中如何触发Old Generation的回收

android - 如何使用 android Webview 显示 res 中原始文件夹中的 HTML 页面?