Existe-t-il un moyen de détecter statiquement si un membre d'une classe peut déclencher une exception? Un truc de métaprogrammation?Détection si un type déclenche
Répondre
Non vous ne pouvez pas (en supposant que vous voulez savoir que la méthode lève une exception). Le programmeur peut utiliser le mot-clé "throw" dans la déclaration de méthode, mais il est facultatif. Il n'y a donc pas moyen de savoir si une méthode déclenche une exception.
En C++, il n'y a pas d'équivalent d'exceptions vérifiées comme en Java.
Il n'est donc pas possible de savoir si une méthode génère une exception, sauf si elle est documentée ou si vous connaissez les détails d'implémentation.
Une méthode, par exemple, qui fonctionne uniquement sur les types de build-in est garantie de ne lancer aucune exception.
Une méthode qui a la spécification throw vide dans la déclaration qu'il a « dit » qu'il ne lèvera une exception pour les erreurs mortelles
int foo() throw(); //does not mean it will never throw an exception
Même attribution par l'opérateur new
peut lancer une exception.
Il est de la responsabilité du programmeur de spécifier explicitement ce que le non-jet garantit à ses méthodes.
- 1. détection d'un type
- 2. Détection si un HttpModule est chargé
- 3. Détection d'un type de classe
- 4. Détection si Internet est connecté
- 5. Détection si un utilisateur est derrière un proxy
- 6. RSA détection du type de fichier pubkey
- 7. Déterminer si un type est un type anonyme
- 8. Comment implémenter la détection "si active" dans un Html.Helper?
- 9. Détection si SQL Server 2008 est installé
- 10. Détection du type d'interruption de l'iPhone
- 11. Détection si un processus est toujours en cours
- 12. Détection si un fichier est déjà ouvert en javascript/hta
- 13. .NET compact framework - détection si sous émulateur?
- 14. Déterminer si un type est un type de référence ou un type de valeur
- 15. Comment détecter si le type est un autre type générique
- 16. comment savoir si un type a hérité d'un autre type?
- 17. Déterminer si un type est statique
- 18. jQuery déclenche dans un formulaire
- 19. jQuery: Problèmes de détection si une case est cochée
- 20. Détection du type de bouton des touches de navigation avant
- 21. Comment déterminer si un type d'interface implémente un attribut personnalisé
- 22. C# - comment déterminer si un Type est un nombre
- 23. Comment supprimer un contrôle si ce n'est un type spécifique?
- 24. Comment vérifier si un type est marqué avec un attribut?
- 25. type d'adresse de détection donné une une chaîne
- 26. mysql :: quel type si insérer?
- 27. vérifier si l'instance d'un type
- 28. JS onclick déclenche un mauvais objet
- 29. Détection si une chaîne particulière est actuellement visible sur TextField()
- 30. Comment puis-je déterminer si System.Type est un type personnalisé ou un type de cadre?
Que voulez-vous dire exactement? Si une fonction membre lance? Si le constructeur jette? Tous les deux? –
et voulez-vous dire si elle * peut * jeter une exception? Ou s'il le fait réellement pour un ensemble donné d'entrées? (Ce qui nécessiterait de résoudre le problème d'arrêt) (de même que le premier, à moins que vous n'autorisiez les faux positifs) – jalf
... et avez-vous besoin de le détecter statiquement (temps de compilation) ou dynamiquement (temps d'exécution)? –