Java Throw: Throw
Le programme peut utiliser l'instruction Throw pour lancer des exceptions claires. La forme habituelle d'une déclaration de lancer est la suivante:
lancer une instance lancée;
Ici, ThrowableInstance doit être un objet du type de classe jetable ou du type de sous-classe jetable. Des types simples, tels que INT ou CHAR, et des classes non lancinables, telles que la chaîne ou l'objet, ne peuvent pas être utilisées comme exceptions. Il existe deux façons d'obtenir des objets jetables: utilisez des paramètres dans la clause Catch ou créez-les avec le nouvel opérateur.
L'exécution du programme s'arrête immédiatement après l'instruction Throw; toutes les instructions suivantes ne sont pas exécutées. Le bloc d'essai le plus serré est utilisé pour vérifier s'il contient une instruction Catch qui correspond au type d'exception. Si un bloc correspondant est trouvé, le contrôle se tourne vers l'instruction; Si aucun bloc de capture correspondant n'est trouvé, le gestionnaire d'exception par défaut interrompt l'exécution du programme et imprime la trace de pile.
Ce qui suit est un exemple de programme qui crée et lance des exceptions.
// Démonstration de throw.class throwDemo {static void DemoProc () {try {throw nullpointerException ("Demo");} catch (nullpointerException e) {syst em.out.println ("capturé à l'intérieur de Demoproc."); / / rethRow l'exception}} public static void main (String args []) {try {demoproc (); Le programme a deux occasions de gérer la même erreur. Tout d'abord, Main () met en place une relation d'exception, puis appelle Demoproc (). La méthode DemoProc () met ensuite en place une autre relation de traitement des exceptions et lance immédiatement une nouvelle instance NullPointerException, qui est capturée sur la ligne suivante. L'exception est ensuite jetée. Voici le résultat de sortie:
Pris à l'intérieur de Demoproc.recaugh: java.lang.nullpointerException: démo
Le programme explique également comment créer des objets d'exception standard en Java, en accordant une attention particulière à la ligne suivante:
lancer un nouveau nullpointerException ("démo");
Ici, Nouveau est utilisé pour construire une instance NullPointerException. Toutes les exceptions d'exécution intégrées Java ont deux constructeurs: on n'a pas de paramètres et un a un paramètre de chaîne. Lorsque le deuxième formulaire est utilisé, le paramètre spécifie la chaîne décrivant l'exception. Si l'objet est utilisé comme paramètre pour imprimer () ou println (), la chaîne s'affiche. Cela peut également être réalisé en appelant GetMessage (), qui est défini par Thrownable.
Java lance la clause <br /> Si une méthode peut provoquer une exception mais ne le gère pas, elle doit spécifier ce comportement afin que l'appelant de la méthode puisse se protéger sans exception. Pour ce faire, vous pouvez inclure une clause de lancers dans la déclaration de la méthode. Une clause lance répertorie tous les types d'exceptions qu'un méthode peut lancer. Ceci est nécessaire pour toutes les exceptions de types, à l'exception de l'erreur ou du runtimeException et de leurs sous-classes. Tous les autres types d'exceptions qu'une méthode peut lancer doit être déclarée dans la clause des lancers. Ne pas le faire entraînera une erreur de compilation.
Voici une forme commune d'une déclaration de méthode contenant une clause de lancers:
Type Method-Name (paramètre-list) lève l'exception-list {// corps de méthode}Ici, la liste d'exception est une liste d'exceptions à segment des virgules que la méthode peut lancer.
Voici un exemple incorrect. Cet exemple tente de lancer une exception qu'il ne peut pas attraper. Étant donné que le programme ne spécifie pas de clause de lancers pour déclarer le fait, le programme ne se compilera pas.
// Ce programme contient une erreur et ne compile pas.class throwsdemo {static void throwone () {System.out.println ("Inside Throwone."); String args []) {throwone (); Pour compiler le programme, deux places doivent être modifiées. Tout d'abord, vous devez déclarer Throwone () pour élever une exception illégal. Deuxièmement, main () doit définir une déclaration d'essai / capture pour attraper l'exception. Les bons exemples sont les suivants:
// Ceci est maintenant correct.class throwsDemo {static void throwone () lance illégalaccessException {System.out.println ("Inside Throwone."); ) {try {throwone ();} catch (illégalaccessException e) {System.out.println ("capturé" + e); Voici les résultats de sortie de l'exemple:
Inside ThrowOnecaught Java.lang.ILLEGALACCESSException: démo