IOException vs RuntimeException Java
class Y {
public static void main(String[] args) throws RuntimeException{//Line 1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws RuntimeException{ //Line 2
if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
throw new IOException();//Line 4
}
}
Quand j'ai jeter les deux types d'exception (IOException dans Line4 et RunTimeException dans Line3), j'ai trouvé que mon programme ne compile pas jusqu'à ce que j'indique "IOException" dans mon jette des clauses de la Ligne 1 & Ligne 2.
Alors que si j'inverse "jette" pour indiquer IOException jetées, le programme ne compile correctement, comme indiqué ci-dessous.
class Y {
public static void main(String[] args) throws IOException {//Line1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws IOException {//Line 2
if (Math.random() > 0.5) throw new RuntimeException();//Line 3
throw new IOException();//Line 4
}
}
Pourquoi dois-je toujours utiliser "jette" pour IOException même si RuntimeException est également levée (Ligne 3) ?
OriginalL'auteur UnderDog | 2013-08-24
Vous devez vous connecter pour publier un commentaire.
Parce que
IOException
est un Checked Exception, qui doivent être traités ou déclarée à être jetés.Au contraire,
RuntimeException
est Décochée Exception. Vous n'avez pas besoin de manipuler ou de le déclarer à être jeté dans la méthode jette de l'alinéa (Ici, je veux dire, il serait syntaxiquement correct si vous ne le manipulez pas la décoché exception. Compilateur ne pas être en colère). Cependant il y a certains situations où vous avez besoin pour gérer et d'agir en conséquence pour certains Décoché Exception.Related Post:
Références:
Il y a quelques
RuntimeException
s qui doit être traitée, même si ils n'ont pas à être pris/déclarés.NumberFormatException
est un exemple courant.être manipulés et besoin pour être traités sont en fait une grande différence.
J'ai dit que dans les termes d'erreur du Compilateur de ne pas être jeté.
Oui, je me demandais, il devrait y avoir de raison d'être 😉
OriginalL'auteur Rohit Jain
La raison en est qu'il ya deux différents types d'exceptions dans ce cas. L'un est un
checked
exception qui devrait être gérée par le programmeur et l'autre est ununchecked
exception qui ne nécessite pas de traitement spécial.OriginalL'auteur svz