? Programmeurs Java passent beaucoup de leur temps de développement de la planification de gestion des exceptions appropriées , les exceptions qui se posent dans les bibliothèques qu'ils utilisent pour planifier lesquelles des dérogations qu'ils vont générer leur propre code. Alors que la plupart des transactions de code Java avec exceptions courantes, telles que découler d'erreurs de fichiers ou des références null , le RemoteException est moins fréquemment rencontrés. En tant que tel , il est difficile pour les programmeurs Java pour obtenir une solide compréhension de quand il est jeté et ce que cela pourrait signifier . Un peu d'histoire sur Remoting
Remoting est l'un des « arts noirs» de la programmation informatique à un grand nombre de développeurs. En fait , il est facile pour les développeurs de passer par toute une carrière sans se soucier de cela . Les détails sont assez méchant , mais l' essentiel c'est simple: . Un programme sur un ordinateur appelle le code sur un autre ordinateur
Pour faciliter la discussion un peu , le terme «client » se référeront à la demande, le programmeur est développement , et «serveur» fera référence à l'application du programmeur communique.
un aperçu de la façon Java Remoting Works
les détails de l'écriture d'un programme Java qui effectue la communication à distance sont au-delà de la portée de cet article, mais les concepts sous-jacents valent couverture. Un objet distant est représentée par une interface. Le développeur obtenir une instance de l'interface et appeler une méthode sur elle.
Cet appel transmet la demande au serveur, qui traitera tous les paramètres (et retourner un résultat si nécessaire). Le processus d'envoi des objets /paramètres vers et depuis le serveur est appelé « triage », et le processus de prise des données mobilisées et la traduction de revenir à des objets utilisables est appelé " unmarshalling " .
< Br > Causes
Bien sûr , les choses peuvent toujours aller mal. Peut-être un programme appelle une fonction qui n'existe pas sur l'autre ordinateur . Par exemple, si vous essayez d'appeler a.foo () en utilisant RMI , et la version sur l'ordinateur que vous êtes en communication avec ne pas avoir a.foo () définie , les choses se cassent. Une autre possibilité est qu'une erreur s'est produite sur le programme de serveur, comme un problème de connexion à la base .
Lorsque cela arrive, vous aurez un RemoteException ou un de ses sous-classes.
saveurs de RemoteException
Il existe différentes sous-classes de RemoteException pour gérer les différentes situations qui peuvent se produire (voir la section Ressources pour une liste exhaustive des sous-classes) . Par exemple, si un problème survient lors de triage ou unmarshalling les objets , un MarshalException ou UnmarshalException seront projetés respectivement . Si une exception qui n'est pas déclarée dans la signature de la méthode appelée (ie , une exception d'exécution cochée) se produit, un UnexpectedException sera levée - cela pourrait être un NullPointerException sur le côté serveur , par exemple
< . br > Manutention RemoteExceptions
Bien que la pratique générale Java recommande de prendre le cas le plus spécialisé d'une exception , cela peut être difficile à réaliser quand on travaille avec RMI . Il ya trop d'exceptions possibles à considérer quand on regarde les différentes sous-classes de RemoteException que traiter avec eux individuellement n'est probablement pas la peine .
Cela dit , un développeur peut se concentrer sur les problèmes potentiels qui peuvent être plus ou moins évidence au cours du développement . Par exemple, dans la première tentative d' un appel de méthode à distance (peut-être lors de l'initialisation de l'application) , le développeur peut tenter de gérer une UnknownHostException d'une manière spécialisée. Une autre possibilité pourrait être un gestionnaire d' RemoteException générique qui pourrait prendre différentes actions sur la base de l'exception spécifique rencontrée .