Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [java]eccezioni

  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]eccezioni

    ciao sto capendo da poco le eccezioni e nello svolgere un problema non capisco l'utilità del costrutto try-catch. Cioè se ho il seguente problema:
    leggi da input un file e stampane il contenuto.
    codice:
    import java.util.*;
    import java.io.*;
    class Esami1{
        public static void main(String[] args)  {
            try{
            FileReader inFile = new FileReader(args[0]);
            BufferedReader b=new BufferedReader(inFile);
            String s;
            while((s=b.readLine())!=null){
                System.out.println(s);
            }
             }catch(IOException e){
                 System.out.println("brava");
         }
     }
    }
    da terminale mi stampa il contenuto del file,che è giusto solo che non capisco il perchè è corretto.Cioè senza il costrutto try-catch il programma mi solleva un eccezione di tipo IOException, ma se lo aggiungo, il programma non mi dovrebbe stampare "brava"?perchè esegue correttamente il blocco try?Poi ho visto che aggiungendo throws dopo il metodo main è come usare il blocco try-catch;che differenza c'è tra i due?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    da terminale mi stampa il contenuto del file,che è giusto solo che non capisco il perchè è corretto.Cioè senza il costrutto try-catch il programma mi solleva un eccezione di tipo IOException, ma se lo aggiungo, il programma non mi dovrebbe stampare "brava"?
    Il codice nel corpo del catch viene eseguito solo se qualcosa dentro il corpo del try lancia quella eccezione.
    Leggendo da un file, puoi avere IOException se c'è appunto qualche problema di I/O. Possono essere tanti i casi: dal file corrotto a livello di file-system alla codifica errata (charset) per cui FileReader non riesce e decodificare da byte a caratteri.

    Quote Originariamente inviata da el92 Visualizza il messaggio
    Poi ho visto che aggiungendo throws dopo il metodo main è come usare il blocco try-catch;
    No, non è affatto la stessa cosa. Dichiarare una eccezione "checked" con throws a livello del metodo significa solo delegare al chiamante l'obbligo di dover prendere in considerazione tale eccezione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ciao grazie per la risposta sei stato chiarissimo

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.