QCM : Exceptions et entrées-sorties en Java — 17 questions

Questions et réponses du QCM

1. Quel mécanisme Java traite formellement une erreur inattendue que le code ne peut pas récupérer dans le contexte actuel ?

La gestion des exceptions
La validation préalable des paramètres
Le retour d’un code d’erreur
La journalisation des opérations

La gestion des exceptions

Explication

La gestion des exceptions est le mécanisme formel prévu par Java pour traiter ce type d’erreur. Le simple retour d’un code d’erreur ne constitue pas ce mécanisme formel de transfert et de traitement.

2. Lorsqu’une exception est rencontrée et ne peut pas être traitée immédiatement, que devient le chemin d’exécution courant ?

Il s’arrête et l’exception remonte vers un contexte supérieur
Il redémarre depuis le début de la méthode concernée
Il continue jusqu’à la fin de la méthode sans signaler l’erreur
Il transforme automatiquement l’erreur en valeur de retour

Il s’arrête et l’exception remonte vers un contexte supérieur

Explication

Une exception interrompt le chemin d’exécution courant et remonte vers un contexte supérieur afin qu’un gestionnaire puisse la traiter. Elle ne devient pas automatiquement une valeur de retour et ne provoque pas un redémarrage de la méthode.

3. Quelle distinction entre java.lang.Exception et java.lang.Error est correcte ?

Exception représente les erreurs bloquantes, tandis qu'Error représente les erreurs non bloquantes
Exception représente les erreurs non bloquantes, tandis qu'Error représente les erreurs bloquantes
Les deux classes désignent des exceptions identiques avec des noms différents
Les deux classes représentent exclusivement des erreurs de compilation

Exception représente les erreurs non bloquantes, tandis qu'Error représente les erreurs bloquantes

Explication

java.lang.Exception concerne les exceptions ou erreurs non bloquantes, alors que java.lang.Error représente les erreurs bloquantes. Les deux classes ne sont donc ni équivalentes ni limitées aux erreurs de compilation.

4. Que se produit-il lorsqu’une instruction throw est exécutée ?

Un objet exception est lancé et le contrôle est transféré vers un gestionnaire
Le message de l’exception est affiché sans interrompre l’exécution
Une exception potentielle est annoncée dans la signature de la méthode
Le code surveillé est délimité sans lancer d’objet

Un objet exception est lancé et le contrôle est transféré vers un gestionnaire

Explication

Le mot-clé throw crée et lance un objet exception, ce qui interrompt le chemin courant et transfère le contrôle à un gestionnaire. L’annonce d’exceptions potentielles dans une signature relève de throws, et non de throw.

5. Quel est le rôle du bloc try dans une structure de gestion des exceptions ?

Délimiter la région de code surveillée qui peut lancer une exception
Attraper et traiter l’exception détectée dans la région surveillée
Exécuter du code de nettoyage après la gestion de l’exception
Annoncer les exceptions possibles dans la signature d’une méthode

Délimiter la région de code surveillée qui peut lancer une exception

Explication

Le bloc try délimite le code dont l’exécution est surveillée parce qu’il peut lancer une exception. Le traitement appartient à catch, tandis que l’annonce relève de throws et le nettoyage courant de finally.

6. Comment faut-il ordonner plusieurs clauses catch portant sur des types liés par héritage ?

Selon l’ordre dans lequel les exceptions sont créées par le programme
De l’exception la plus générale vers l’exception la plus spécialisée
De l’exception la plus spécialisée vers l’exception la plus générale
Selon l’ordre alphabétique des noms de classes d’exception

De l’exception la plus spécialisée vers l’exception la plus générale

Explication

Les clauses catch doivent aller du type le plus spécialisé au type le plus général afin qu’une clause générale ne masque pas les suivantes. L’ordre alphabétique ou l’ordre de création des exceptions ne détermine pas leur validité.

7. Que garantit le bloc finally dans une structure try-catch-finally ?

Son exécution qu’une exception soit lancée ou non, avant la reprise après la structure
Son exécution uniquement lorsqu’un gestionnaire catch valide l’exception
Le traitement d’une exception avant son transfert vers un gestionnaire supérieur
La reprise de l’exécution au début du bloc try après le nettoyage effectué

Son exécution qu’une exception soit lancée ou non, avant la reprise après la structure

Explication

Le bloc finally s’exécute qu’une exception survienne ou non, puis l’exécution normale reprend après la structure try-catch-finally. Il ne sert ni à remplacer catch ni à relancer automatiquement le bloc try.

8. Quelle démarche permet de créer une exception personnalisée en Java ?

Déclarer une méthode qui retourne un code d’erreur personnalisé
Créer une classe indépendante sans relation avec la hiérarchie des exceptions
Modifier directement le comportement de java.lang.Exception
Déclarer une classe qui hérite d’un type d’exception existant adapté

Déclarer une classe qui hérite d’un type d’exception existant adapté

Explication

Une exception personnalisée est créée en faisant hériter une nouvelle classe d’un type d’exception existant, généralement proche de l’erreur représentée. Une classe indépendante ne s’intègre pas à la hiérarchie des exceptions Java.

9. Quel rôle joue le mot-clé throws dans la signature d’une méthode ?

Il délimite le code susceptible de produire une exception
Il attrape une exception afin d’exécuter son traitement
Il crée et lance immédiatement un objet exception
Il déclare les exceptions potentielles que la méthode peut lancer

Il déclare les exceptions potentielles que la méthode peut lancer

Explication

Le mot-clé throws annonce dans la signature les exceptions potentielles que la méthode peut lancer. Le lancement effectif d’un objet relève de throw, tandis que try et catch surveillent et traitent l’exception.

10. Que représente abstraitement un objet de la classe File ?

Une copie en mémoire des données contenues dans un fichier
Une connexion active vers un répertoire du système d’exploitation
Le contenu binaire d’un fichier, indépendant de son emplacement
Le nom d’un fichier ou d’un répertoire, indépendamment du système d’exploitation

Le nom d’un fichier ou d’un répertoire, indépendamment du système d’exploitation

Explication

Un objet File désigne abstraitement le nom d’un fichier ou d’un répertoire sans dépendre du système d’exploitation utilisé. Il ne contient donc ni les données du fichier ni une connexion active vers le répertoire.

11. Quelle opération peut être réalisée avec la classe File ?

Lister le contenu d’un répertoire et consulter les caractéristiques d’un fichier
Modifier directement les permissions d’un compte utilisateur distant
Chiffrer les données d’un fichier et gérer les clés de sécurité
Compiler le contenu d’un fichier et exécuter automatiquement son programme

Lister le contenu d’un répertoire et consulter les caractéristiques d’un fichier

Explication

La classe File permet notamment de créer ou supprimer des fichiers et répertoires, d’obtenir des chemins et de lister un répertoire. La compilation, le chiffrement et la gestion de comptes ne font pas partie de ses fonctions générales.

12. Quelles classes ou quels objets sont principalement associés à la lecture et à l’écriture d’un fichier texte ?

File et FileOutputStream pour lire, puis Scanner et BufferedWriter pour écrire
Scanner et File pour lire, puis FileWriter, FileOutputStream ou BufferedWriter pour écrire
FileWriter et BufferedWriter pour lire, puis Scanner et FileOutputStream pour écrire
ObjectInputStream pour lire, puis Serializable et ObjectOutputStream pour écrire

Scanner et File pour lire, puis FileWriter, FileOutputStream ou BufferedWriter pour écrire

Explication

Scanner et File peuvent servir à lire un fichier texte, tandis que FileWriter, FileOutputStream et BufferedWriter peuvent servir à y écrire. La confusion fréquente consiste à inverser les outils de lecture et ceux d’écriture.

13. Quelle distinction décrit correctement les flux d’entrée et les flux de sortie ?

Les flux d’entrée lisent des données, tandis que les flux de sortie écrivent des données
Les flux d’entrée analysent les objets, tandis que les flux de sortie compilent les classes
Les flux d’entrée écrivent des données, tandis que les flux de sortie lisent des données
Les flux d’entrée ouvrent les répertoires, tandis que les flux de sortie calculent leur taille

Les flux d’entrée lisent des données, tandis que les flux de sortie écrivent des données

Explication

Un flux d’entrée transporte des données vers le programme pour permettre leur lecture, alors qu’un flux de sortie transporte des données depuis le programme pour permettre leur écriture. Les autres distinctions confondent les flux avec des opérations sur les fichiers ou les objets.

14. Que produit la sérialisation d’un objet Java ?

Un fichier texte contenant automatiquement toutes les méthodes de la classe
Une séquence d’octets permettant de régénérer l’objet original
Une référence temporaire vers l’objet conservée dans la mémoire du programme
Une structure de répertoire destinée à remplacer l’objet dans le système

Une séquence d’octets permettant de régénérer l’objet original

Explication

La sérialisation transforme l’objet en une séquence d’octets qui peut servir à le régénérer, y compris sur un réseau ou un autre système d’exploitation. La restauration de l’objet à partir de ces octets correspond à la désérialisation.

15. Quelle suite d’opérations permet de sérialiser correctement un objet Java dans un fichier ?

Envelopper un OutputStream dans ObjectOutputStream, appeler writeObject, puis fermer le flux
Implémenter Serializable, appeler readObject, puis écrire le résultat avec FileReader
Envelopper un InputStream dans ObjectInputStream, appeler readObject, puis fermer le flux
Créer un Scanner, appeler nextLine, puis enregistrer l’objet avec BufferedReader

Envelopper un OutputStream dans ObjectOutputStream, appeler writeObject, puis fermer le flux

Explication

La sérialisation s’effectue en enveloppant un OutputStream dans un ObjectOutputStream, puis en appelant writeObject avant de fermer le flux. ObjectInputStream et readObject servent au processus inverse, la désérialisation.

16. Comment un objet Java est-il généralement désérialisé à partir d’un flux ?

FileWriter lit les octets avec readObject, puis les transforme en contenu textuel
ObjectOutputStream écrit les données avec writeObject, puis les convertit vers le type attendu
ObjectInputStream crée l’objet avec writeObject, puis ferme le fichier avant toute lecture
ObjectInputStream lit les données avec readObject ou readInt, puis les convertit vers le type attendu

ObjectInputStream lit les données avec readObject ou readInt, puis les convertit vers le type attendu

Explication

ObjectInputStream lit les données avec readObject ou readInt, puis le résultat est converti vers le type attendu avant la fermeture du flux. ObjectOutputStream et writeObject appartiennent au processus de sérialisation, qui produit les données.

17. Quelle condition rend les objets d’une classe sérialisables en Java ?

La classe doit utiliser BufferedWriter, qui active la conversion en octets
La classe doit implémenter l’interface Serializable, qui sert d’indicateur sans méthode
La classe doit définir readObject et writeObject, qui sont imposées par Serializable
La classe doit étendre ObjectOutputStream, qui fournit les méthodes de sauvegarde

La classe doit implémenter l’interface Serializable, qui sert d’indicateur sans méthode

Explication

Une classe rend ses objets sérialisables en implémentant Serializable, une interface vide utilisée comme marqueur. Cette interface n’impose donc pas de méthodes readObject ou writeObject à définir.

Révisez avec les flashcards

Mémorisez les réponses avec 38 flashcards sur Exceptions et entrées-sorties en Java.

Qu'est-ce que la gestion d'exceptions en Java ?

Un mécanisme formel qui traite les erreurs inattendues ou inacceptables.

Que se passe-t-il quand une exception est rencontrée en Java ?

Le code arrête son exécution et remonte l'exception au contexte supérieur.

Que représente la classe java.lang.Exception ?

Les exceptions ou erreurs non bloquantes.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Exceptions et entrées-sorties en Java.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM