Java finally步步完善

Java finally步步完善
------------------------------------------------------------------------------------------
try{ Socket sock=new Socket("127.0.0.1",9999); DataInputStream din=new DataInputStream(sock.getInputStream()); DataOutputStream dout=new DataOutputStream(sock.getOutputStream()); //业务代码 ... din.close(); dout.close(); sock.close(); }catch(Exception e){ //异常处理程序 }

上述代码的问题:
忽略了在关闭上述对象时可能产生异常的情况,一旦出现异常将不会执行后面的代码,无用的对象将会占用宝贵的内存。
------------------------------------------------------------------------------------------
Socket sock=null; DataInputStream din=null; DataOutputStream dout=null; try{ Socket sock=new Socket("127.0.0.1",9999); DataInputStream din=new DataInputStream(sock.getInputStream()); DataOutputStream dout=new DataOutputStream(sock.getOutputStream()); //业务代码 ... din.close(); dout.close(); sock.close(); }catch(Exception e){ //异常处理程序 } finally{ try{ din.close(); dout.close(); sock.close(); }catch(Exception e){ //异常处理程序 } }
上述代码的问题:
若 din.close();抛出了异常,后面两句就不会执行,这是一种没有做到位的的表现。
--------------------------------------------------------------------------------------------
最后的完善
Socket sock=null; DataInputStream din=null; DataOutputStream dout=null; try{ Socket sock=new Socket("127.0.0.1",9999); DataInputStream din=new DataInputStream(sock.getInputStream()); DataOutputStream dout=new DataOutputStream(sock.getOutputStream()); //业务代码 ... din.close(); dout.close(); sock.close(); }catch(Exception e){ //异常处理程序 } finally{ try{din.close();} catch(Exception e){ //异常处理程序 } try{dout.close();} catch(Exception e){ //异常处理程序 } try{sock.close();} catch(Exception e){ //异常处理程序 } }

你可能感兴趣的:(JAVA-BASIC)