Try-Catch-Lancer dans la même classe Java
Est-il possible d'attraper une méthode dans la classe courante, le bloc try-catch est en cours d'exécution sur? par exemple:
public static void arrayOutOfBoundsException(){
System.out.println("Array out of bounds");
}
.....
public static void doingSomething(){
try
{
if(something[i] >= something_else);
}
catch (arrayOutOfBoundsException e)
{
System.out.println("Method Halted!, continuing doing the next thing");
}
}
Si c'est possible comment peut-elle être la bonne façon d'appeler la méthode de capture?
Si c'est pas possible, quelqu'un pourrait-il me diriger dans la bonne direction, de façon à arrêter une exception à la règle de l'arrêt de mon exécution du programme en Java sans avoir à en créer de nouvelles classes dans le package, ou de fixer le code qui produit ArrayOutOfBoundsException erreur.
Merci d'Avance,
Java Recrue
- Le
catch
clause cherche une classe d'exception pas la méthode. D'où lae
dans les paramètres est unException
objet (ou de classe)
Vous devez vous connecter pour publier un commentaire.
Ce que vous êtes désireux de le faire est de gérer un Exception.
C'est tout ce dont vous avez besoin. Pas de classes supplémentaires, pas de méthodes supplémentaires.
Une Exception est un type spécial de classe qui peut être "jeté" (vous pouvez jeter vous-même en utilisant le
throw
mot-clé, ou Java peut jeter l'un pour vous, par exemple, si vous essayez d'accéder à un index de tableau qui n'existe pas ou essayez d'effectuer une opération sur unnull
). La levée d'une exception "ouvrir" votre pile d'appel ("s'échapper" de chaque appel de fonction) jusqu'à ce que votre programme se termine enfin. À moins que vouscatch
, ce qui est exactement ce que la syntaxe ci-dessus n'.Donc, si vous écrivez une fonction
a()
qui appelle une fonctionb()
qui appelle une fonctionc()
etc()
a déclenché une exception, mais l'exception n'a pas été pris enb()
ouc()
, vous pourriez encore dansa()
:Cela dit, si il est possible de prévenir une exception d'être jeté en premier lieu, c'est souvent une meilleure idée. Dans votre cas particulier, ce serait possible, car tous les tableaux en Java connaître leur propre longueur:
Hmm.. je pense que vous êtes un peu confus. Vous n'avez pas attraper une méthode avec des blocs try catch. Vous intercepter des Exceptions. Les Exceptions sont plus comme des choses.
Seuls (notez la majuscule "A" de ArrayOutOfBoundsException) permettra d'éviter votre programme de résilier même si cette Exception est levée. Vous n'avez pas besoin de déclarer une "arrayOutOfBoundsException()" la méthode.
Notez le petit "e"? C'est la référence que vous pouvez utiliser pour faire référence à cette Exception. Ainsi, vous pouvez demander des choses à cet Exceptions à l'aide de ce petit variable locale. Par exemple, si vous souhaitez imprimer où l'exception s'est produite, vous pouvez le faire
e.printStackTrace();
.Vous intercepter des Exceptions, avec un bloc try-catch. Vous ne savez pas si vous pouvez prendre les méthodes avec cette.
Le " e " dans le catch() est la référence utilisée pour faire référence à une Exception.
Exception se réfère à cela lorsqu'il souhaite vérifier votre état de santé donné et vous renverra un message d'avertissement ou d'erreur sur la condition de ne pas se satisfait.
Je pense que tu veux dire pour avoir le arrayOutOfBoundsException de la méthode de jeter l'exception causé... Si je comprends bien:
Est que ce que vous demandez?
J'essaie de comprendre ce que vous demandez, votre terminologie est faux dans les lieux 🙂 Si vous essayez de définir un index out of bounds, vous obtiendrez un intégré exception de toute façon,
ArrayIndexOutOfBoundsException
. Vous pouvez l'intercepter et de les utiliser à l'intérieur de la méthode, ou de le jeter à l'aide d'unclass XX throws ArrayIndexOutOfBoundsException
déclaration dans l'en-tête de la méthode, de sorte que l'invocation de la méthode peut l'attraper (ce n'est pas nécessaire pour attraper unArrayIndexOutOfBoundsException
que c'est unRuntimeException
-- c'est à dire, rien ne se passe, si ça se passe interceptée, elle est désactivée.Voir cet article de wiki pour plus de détails: http://en.wikibooks.org/wiki/Java_Programming/Throwing_and_Catching_Exceptions.
Il n'est pas clair ce que tu veux dire par "Est-il possible d'attraper une méthode". Dans votre cas, vous devez écrire votre code comme :
Pas
ArrayOutOfBoundsException
est nécessaire.