编程语言
首页 > 编程语言> > Java-如果用户意外关闭程序,try-with-resources会调用.close()吗?

Java-如果用户意外关闭程序,try-with-resources会调用.close()吗?

作者:互联网

这个问题已经在这里有了答案:            >            How does Java’s System.exit() work with try/catch/finally blocks?                                     6个
我正在为正在开发的程序处理一些服务器代码,并且正在使用try-with-resource语句关闭套接字.

try (
            ServerSocket serverSocket = new ServerSocket(port);
            Socket clientSocket = serverSocket.accept();

            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        ) {


        out.println("This is the server! Hooray! :D");


    } catch (IOException e) {
        e.printStackTrace();
        System.exit(-1);
    }

问题是,如果用户决定在try块完成之前关闭程序,该怎么办?会调用.close()方法吗?

这在oracle的网站上:无论try语句正常完成还是突然完成,它都会关闭.但是我不确定这是否包括用户是在尝试完成之前关闭程序还是程序崩溃了.

谢谢.

解决方法:

是/否,

“ try-with-resources语句可确保在语句末尾关闭每个资源”

可以在Oracle找到

只是将其视为最终障碍.最终将始终执行.

“注意:如果在执行try或catch代码的同时退出JVM,则finally块可能不会执行.同样,如果执行try或catch代码的线程被中断或杀死,即使整个应用程序还在继续.”

可以在Oracle找到

标签:sockets,try-catch,java,resources
来源: https://codeday.me/bug/20191120/2043607.html