finally关键字如果在程序没有错误的条件下,有和没有的作用是一样的。
但是如果有错误了呢?
finally关键字里面的语句会在程序崩溃之后还会继续执行。比如我们在写socket的时候
try{
socket = this.serverSocket.accept();
System.out.println("新连接,连接地址:"+socket.getInetAddress()+" : "+socket.getPort());//客户端信息
//输入流,向客户端读入信息
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//输出流,向客户端写入数据
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
PrintWriter pw = new PrintWriter(bw,true);//
String info = null;
while((info = br.readLine())!=null)
{
System.out.println(info);
if(info.equals("bye"))
{
break;
}
else{
pw.println("EchoServer received:"+info);
}
}
}
catch(IOException e)
{
e.printStackTrace();
}
<span style="white-space:pre"> </span>//finally关键字就可以保证socket被明显的关掉
finally{
if(null!=socket)
{
try{
socket.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}