1. throw
opérateur
Lorsqu'une exception est interceptée par un catch
bloc, et jusqu'à ce qu'elle soit lancée sur la machine Java, c'est juste un objet qui hérite Exception
(ou plutôt, Throwable
). L'objet exception lui-même n'a aucune propriété magique.
Toute la logique du fonctionnement des exceptions n'est qu'une façon particulière dont la machine Java se comporte lorsqu'une exception lui est levée.
Vous pouvez toujours renvoyer une exception interceptée à la machine Java. Pour ce faire, vous devez utiliser l' throw
opérateur :
throw exception;
Exemple:
Code | Sortie console |
---|---|
|
|
Dans ce code, nous avons intercepté une exception, affiché un message à ce sujet à l'écran, puis l'avons renvoyée.
Une exception renvoyée ne peut pas être interceptée par d'autres catch
blocs du même try
bloc.
2. Vos dérogations
Au fait, vous pouvez créer vous-même un objet d'exception : il s'agit simplement d'un objet dont le type est Exception
ou d'une classe qui en hérite. Et jetez-le.
C'est plus facile qu'il n'y paraît. Exemple:
Code | Sortie console |
---|---|
|
|
Dans l'exemple ci-dessus, nous avons créé un nouvel objet d'exception dont le type est RuntimeException
et l'avons immédiatement lancé à l'aide de l' throw
opérateur.
Il sera immédiatement intercepté par le catch
bloc, car RuntimeException hérite de Exception
. Le catch (Exception except)
code intercepte les objets d'exception de toutes les classes qui héritent de la Exception
classe.
3. finally
mot clé
Autre point important. Parfois, un programmeur doit effectuer une action, qu'une exception se soit produite ou non dans le code. Par exemple, supposons que nous ouvrions un fichier en écriture. Le fichier ouvert doit être fermé en appelant close()
.
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
finally
{
// Code that must executed no matter what happens
}
Pour effectuer ces actions obligatoires, un autre type de bloc ( finally
) a été ajouté à la try-catch
construction, créant ainsi la try-catch-finally
construction. Il ressemble à ceci :
Exemple:
FileInputStream source = null;
try
{
source = new FileInputStream("c:\\note.txt");
source.read();
}
catch(Exception except)
{
System.out.println("Caught the exception");
throw except;
}
finally
{
if (source != null)
source.close();
}
Le code du finally
bloc s'exécutera dans tous les cas, qu'il y ait ou non une exception. Même si une exception est levée et non interceptée, le finally
bloc s'exécutera toujours.
Au fait, si vous ne voulez pas intercepter une exception, mais que vous avez besoin d'un finally
bloc, utilisez la notation abrégée pour la try-catch-finally
construction : un try-finally
bloc. Cela ressemble à ceci :
try
{
// Code where an exception might occur
}
finally
{
// Code that must executed no matter what happens
}
GO TO FULL VERSION