2010-10-26 8 views
0

J'ai essayé un code simple dans lequel l'utilisateur doit saisir un nombre. Si l'utilisateur entre un caractère, il produira numberformatexecption. Cela fonctionne bien. Maintenant, quand je supprime essayez d'attraper le bloc, il montre une erreur. Quelle est la signification de l'erreur Le code et l'erreur comme suitgestion des exceptions non signalées

import java.io.*; 
class execmain 
{ 
    public static void main(String[] args) 
    { 
     //try 
     //{ 
      int a; 
      BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
      a=Integer.parseInt(br.readLine());// ---------error-unreported exception must be caught/declared to be thrown 
      System.out.println(a); 
     //} 
     //catch(IOException e) 
     //{ 
     //System.out.println(e.getMessage()); 
     //} 
    } 
} 

Pourquoi cette erreur vient?

+1

Hi. Lorsque vous publiez du code, vous pouvez utiliser le bouton avec des zéros et des uns pour appliquer le formatage du code. –

Répondre

4

La signification de l'erreur est que votre application n'a pas détecté l'exception IOException qui peut être levée lorsque vous essayez de lire des caractères du flux d'entrée. Une exception IOException est une exception vérifiée et Java insiste sur le fait que les exceptions vérifiées doivent être interceptées ou déclarées dans la signature de la méthode englobante.

Vous pouvez soit renvoyer le try ... catch, soit modifier la signature de la méthode main en ajoutant throws IOException.

1

readLine() lancers francs IOException qui est une exception vérifiée , ce qui signifie qu'il doit bei soit pris, ou la méthode doit être déclarée pour le jeter. Il suffit d'ajouter la déclaration à votre principale méthode:

public static void main(String[] args) throws IOException 

Vous pouvez également déclarer comme throws Exception - pour les programmes jouets/apprentissage qui est très bien.

+0

NumberFormatException est une exception non cochée! – flash

+0

Il ne devrait pas y avoir de négatif pour cela. Allez, ça arrive. Vous vous comportez parfois comme un examinateur scolaire. +1 pour le contrer. –

+0

@Adeel Ansari D'accord! Downvote est un peu trop dur pour ça. – flash

1

La ligne:

a=Integer.parseInt(br.readLine()); 

va lancer une IOException parce br.readLine() renvoie cette exception. Java vous obligera à attraper l'exception explicitement, comme votre bloc de code commenté, ou votre méthode doit explicitement lever cette exception comme:

public static void main(String[] args) throws IOException