Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Chiudere stream

  1. #1

    Chiudere stream

    E' corretto chiudere gli stream in questo modo (tutti nello stesso try catch)?
    codice:
    try{
        FileInputStream f = new FileInputStream();
        InputStreamReader i= new InputStreamReader();
        BufferedReader b = new BufferedReader();			
    }			
    catch (IOException ex) 
    {			
       throw ex;
    }
    finally
    {
      try{
    	b.close();
    	i.close();
    	f.close();
      }		
      catch(IOException ie)
     {
    	throw ie;
     }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Chiudere stream

    Originariamente inviato da Chiara3.0
    E' corretto chiudere gli stream in questo modo (tutti nello stesso try catch)?
    No. Innanzitutto va sempre e solo chiuso lo stream più "esterno", non anche quelli "wrappati".

    Poi comunque bisogna anche vedere dove hai scritto tutto questo. Generalmente, se c'è un metodo che dovrebbe occuparsi solo di I/O, allora sarebbe corretto dichiarare che il metodo può lanciare IOException e nel metodo non catturare nulla e fare i close nel finally.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quindi fare cosi?

    codice:
    try{
        FileInputStream f = new FileInputStream();
        InputStreamReader i= new InputStreamReader(f);
        BufferedReader b = new BufferedReader(i);	
       //..		
    }	
    finally
    {
      if(b!=null)
        b.close();	
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Chiara3.0
    Quindi fare cosi?
    Non proprio. 'b' è visibile solo nel blocco del try .... non nel finally!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Hai ragione. L'ho scritto dentro per risparmiare 2 righe, ma in realtà è dichiarato fuori
    Comunque..grazie ))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.