我正在寻找Java7的新功能.我发现一个是 try-with-resources Statement.任何人都可以告诉我它究竟意味着什么?我们应该使用它的原因和位置,以及我们可以利用此功能的地方?即使是try声明也没有catch阻止让我感到困惑.
这几乎看起来很傻但是关闭OutputStream时最可靠的模式是什么?现在我有类似下面的东西,似乎是try-catch-finally-overkill:
private void writeContentsToFile(OutputStream ostream, Properties contents) {
try {
contents.store(ostream, "comments");
}
catch (IOException e) {
throw new ResourceException("Failed to write contents", e);
}
finally {
try {
ostream.close();
}
catch (IOException e) { /* what can be done here anyway? */ }
}
}
Run Code Online (Sandbox Code Playgroud)
为什么近距离抛出一个经过检查的异常对我来说仍然是一个谜.我可以创建执行close/catch块的包装器方法,但是如果有某些东西已经存在,就像FileUtil.closeFileAndThrowUncheckedException()我想要使用它一样.当你有很多具有大量开发人员的小项目时,这会变得更有用; 一种方法是正确的.
这是一个简单的TCP服务器.程序终止后如何关闭套接字?我使用try/finally并尝试关闭套接字.但是当我退出程序时它不会运行finally块.
任何人都可以知道如何以正确的方式关闭插座?
try {
socket = new ServerSocket(port);
System.out.println("Server is starting on port " + port + " ...");
}catch (IOException e){
System.out.println("Error on socket creation!");
}
Socket connectionSocket = null;
try{
while(true){
try{
connectionSocket = socket.accept();
Thread t = new Thread(new ClientConnection(connectionSocket));
t.start();
}catch (IOException e) {
System.out.println("Error on accept socket!");
}
}
}finally{
this.socket.close();
System.out.println("The server is shut down!");
}
Run Code Online (Sandbox Code Playgroud) 我在我的代码中硬编码了这个 JSON 字符串。
String json = "{\n" +
" \"id\": 1,\n" +
" \"name\": \"Headphones\",\n" +
" \"price\": 1250.0,\n" +
" \"tags\": [\"home\", \"green\"]\n" +
"}\n"
;
Run Code Online (Sandbox Code Playgroud)
我想将它移动到资源文件夹并从那里读取它,我如何在 JAVA 中做到这一点?
关闭一个当什么是最可靠的模式可供遵循OutputStream,ServerSocket或其他对象实现的AutoCloseable接口?
我应该使用try- catch-finally吗?或者关闭钩子。
使用对象我们使用3个基本步骤:
我的问题是必须采取哪些步骤 ()尝试的一部分,以便自动关闭资源.
示例1 - 将在此代码中自动关闭FileReader对象:
try (BufferedReader br = new BufferedReader(new FileReader(filePath)))
{
//some code;
}
Run Code Online (Sandbox Code Playgroud)
示例2 - 将在此代码中自动关闭buf2:
private static BufferedReader buf1;
public static void main(String[] args) throws IOException {
//some code
try (BufferedReader buf2 = buf1)
{
}
}
Run Code Online (Sandbox Code Playgroud)
PS有人认为这个问题与Try With Resources和Try-Catch重复.它不是.这个问题是关于try-catch和try-with-resources之间的区别.我的问题是关于试用的细节.
说我有以下代码:
try {
Reader reader = new FileReader("/my/file/location");
//Read the file and do stuff
} catch(IOException e) {
e.printStackTrace();
} finally {
reader.close();
}
Run Code Online (Sandbox Code Playgroud)
为什么读者只存在于try括号内?这是为了阻止Exception在对象reader尚未初始化或设置的代码中更早抛出该异常吗?
我应该如何清理该try子句中存在的对象,还是必须将它们带到外部?
我正在使用动态 Web 项目。我在服务器启动时打开会话。为此,我使用了一吨静态类,并在各处使用会话。
但我不确定何时关闭会话。你知道哪里可以处理吗?最佳做法是什么?