我已获得以下代码:
try(Socket s1=new Socket(...); Socket s2=new Socket(...);)
{
some logic...
}
据我了解,Java首先关闭s2
然后关s1
。
如果s2.close()
抛出异常,会发生什么? Java会在上次失败后尝试关闭s1
吗?
答案 0 :(得分:3)
引用JLS Sec 14.20.3(强调我的):
资源以与初始化资源相反的顺序关闭。仅当资源初始化为非空值时才关闭资源。 关闭一个资源的例外不会阻止关闭其他资源。