天天看点

JAVA 关于finally关键字

      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();
					}
				}
			}