我正在编写一个连接到网站并从中读取一行的应用程序。我这样做是这样的:
try{
URLConnection connection = new URL("www.example.com").openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String response = rd.readLine();
rd.close();
}catch (Exception e) {
//exception handling
}
好吗?我的意思是,我在最后一行关闭了BufferedReader,但没有关闭InputStreamReader。我是否应该从connection.getInputStream创建一个独立的InputStreamReader,并从独立的InputStreamReader创建一个BufferedReader,而不是关闭所有两个阅读器?我认为最好将close方法放置在finally块中,如下所示:
InputStreamReader isr = null;
BufferedReader br = null;
try{
URLConnection connection = new URL("www.example.com").openConnection();
isr = new InputStreamReader(connection.getInputStream());
br = new BufferedReader(isr);
String response = br.readLine();
}catch (Exception e) {
//exception handling
}finally{
br.close();
isr.close();
}
但这很丑陋,因为关闭方法会引发异常,所以我必须处理或引发异常。
哪种解决方案更好?或最佳解决方案是什么?
Java中资源获取和发布的一般习惯用法是:
final Resource resource = acquire();
try {
use(resource);
} finally {
resource.release();
}
注意:
try
应该立即跟随习得。这意味着您不能将其包装在装饰器中并保持安全性(删除空格或将内容放在一行上都无济于事:)。finally
,否则将不会异常安全。null
使用final
。否则,您将拥有凌乱的代码和潜在的NPE。try
块中捕获(Java会使您误入歧途)。随着 Jekyll 被更广泛的使用,一系列的教程、框架、扩展、示例和其他各种有用的资源也相继出现。下面列出了一些最流行的 Jekyll 资源合辑的链接。 Jekyll 提示和技巧,以及示例 与 GitHub Pages 集成的技巧 重用代码并保持文档同步至最新的示例。 使用 Simple Form 来集成一个简单的联系表单 JekyllBootstrap.com 提供了详细的解释,例子和辅助代码让
Windows 命令行界面 cmder 的官方网站 宁皓网《命令行》视频课程 宁皓网《我的工作流程:Windows》视频课程里的命令行 宁皓网《我的工作流程》视频课程里的终端
Atlassian:Learn Git Git 远程服务 Github,国外服务商,公开仓库免费,私有仓库收费 Coding.net,国内服务商,提供免费的公开与私有仓库 阿里云 Git,国内服务商,提供免费的公开与私有仓库 Atlassian,国外服务商,提供免费的公开与私有仓库
Digital Ocean:How To Use Rsync to Sync Local and Remote Directories on a VPS Tecmint:10 Practical Examples of Rsync Command in Linux
相关资料: MDN 影子DOM(Shadow DOM) Web Components Shadow DOM v1:独立的网络组件
我正在编写一个程序,希望控制台输出用户输入的数字的剩余部分。但是,每次我编译代码时,控制台都会打印出来,我得到以下控制台错误: 我不确定控制台所说的“资源泄漏”是什么意思。我在几个不同的地方查找过它(包括API和其他堆栈溢出问题),我不确定为什么没有打印到控制台。我正在使用DrJava程序,以防有人想知道。 这里是我的代码供参考: