Pensez à deux cas case1 et case2 plus deux méthodes method1 et method2. Say method1 résout case1 et method2 résout case2. Maintenant, j'ai un programme qui pourrait se retrouver avec case1 ou case2. Dans mes codes, j'appelle la méthode 1, peu importe le cas. Mais, si case2 se produit, method1 donne une exception nullpointer. Ce que je veux est ce qui suit: mes codes devraient d'abord appeler la méthode 1, si une exception se produit, alors la méthode 2 est appelée. Comment vais-je faire ça? Puisque je n'ai aucune information sur essayer et attraper, j'ai vraiment besoin d'aide!Java - Débarrassez-vous de NullPointerException
Répondre
Attraper NullPointerException
est une mauvaise pratique - vous ne pouvez pas attraper l'exception particulière que vous voulez attraper. Vous avez deux options:
1) throw votre propre exception et l'attraper plus tard:
public void method1(Case caze) throws MyException {
if (case.getType() == CaseType.CaseOne) {
// processing
} else {
throw new MyException("Wrong case type");
}
}
Et le code client:
try {
method1(caze);
} catch (MyException e) {
// log the excpetion
method2(caze);
}
2) Retourner un drapeau booléen, ce qui indique que le traitement a été finalisé avec succès. Rappelez-vous qu'il est toujours préférable d'analyser les valeurs plutôt que d'utiliser le mécanisme d'essai dans vos situations. Je suggère la variante n ° 2 pour vous.
Vous pouvez le faire:
try {
method1();
}
catch (Exception e) {
method2();
}
Cela dit, il est généralement préférable de compter sur les exceptions que pour des conditions exceptionnelles. Pour un flux de contrôle normal, vous pouvez utiliser un:
if (isCase2()) {
method2();
}
else {
method1();
}
Comme @Vladimir posté, si vous voulez aller avec try/catch, il est préférable de lancer votre propre objet exception de method1 plutôt que de s'appuyer sur un NPE (qui peut survenir même dans le cas 1 en raison d'autres problèmes). –
D'accord. Le premier exemple ci-dessus est destiné à satisfaire littéralement l'OP: "mes codes devraient d'abord appeler la méthode 1, si une exception se produit, alors la méthode 2 est appelée." Si vous pouvez distinguer a priori cas1 et cas2, il est préférable d'utiliser une exception. –
Absolument. Utilisez des exceptions pour des situations exceptionnelles. Cela ressemble à avoir un cas par rapport à un autre n'est pas exceptionnel du tout. –
- 1. Java NullPointerException
- 2. Java: NullPointerException
- 3. Nullpointerexception java
- 4. Java NullPointerException
- 5. NullPointerException pour Android Java
- 6. Java - double buffering NullPointerException
- 7. Java Applet NullPointerException
- 8. Java Compiler API NullPointerException
- 9. NullPointerException dans Java ArrayList
- 10. Strange nullPointerException en Java
- 11. NullPointerException Java help
- 12. Java Singleton NullPointerException
- 13. Java ArrayList NullPointerException
- 14. Java Exception nullpointerexception error
- 15. Java jasper report NullPointerException
- 16. Java - NullPointerException en Array
- 17. Java getText NullPointerException
- 18. Java Code - NullPointerException
- 19. InputStream NullPointerException retour (Java)
- 20. Java/Android fichier récursive NullPointerException
- 21. Java - NullPointerException dans le tableau?
- 22. Java: ListA.addAll (ListB) déclenche NullPointerException?
- 23. Java InputStreamReader/Reader throws NullPointerException
- 24. Aide avec tableau java NullPointerException
- 25. Java ObjectInputStream readObject Lance NullPointerException
- 26. NullPointerException dans le code Java
- 27. Java - NullPointerException dans une méthode
- 28. Java InputStream NullPointerException avec InputStream
- 29. Threads en Java obtenant NullPointerException
- 30. Java Applet: inetAddress.getHostName() throws NullPointerException
Je pense qu'un code est meilleur que n'importe quelle explication. – khachik
Je suppose que vous avez raison. Dites que j'ai TreeNode parentNode qui sera la main gauche d'une égalité et la main droite sera search (parent, this) ou search2 (parent, this). Pourtant, search and search2 pourrait renvoyer null, ce que je ne veux pas. Maintenant, comment dois-je mettre en œuvre? –
s'il vous plaît modifier votre question et poster un échantillon de code, pas seulement les noms de variables et les signatures de méthodes. – khachik