Pourquoi NullPointerException est une exception d'exécution et RemoteException non?
Une raison possible à cause d'une NullPointerException est une exception d'exécution est parce que chaque méthode peut le jeter, de sorte que chaque méthode aura besoin d'avoir une "jette NullPointerException", et serait laid. Mais ce qui se passe avec RemoteException.
Et une raison possible parce que RemoteException n'est pas une exception d'exécution, est de dire au client de traiter l'exception. Mais chaque méthode dans un environnement à distance doivent se jette sur elle, donc il n'y a pas de différence de jeter NullPointerException.
Spéculations? Ai-je été clair?
source d'informationauteur Tom Brito
Vous devez vous connecter pour publier un commentaire.
Je ne vais pas discuter de la décision, je vais juste citer l'explication de la décision d'Ann Wollrath (qui diriger la conception et la mise en œuvre de Java RMI). C'est extraite de cette message de la RMI-les UTILISATEURS des archives (message de Jan 1999):
Il y a beaucoup plus de potentiel pour
NullPointerException
queRemoteException
. Tout le code qui appelle une méthode sur un objet (ce qui signifie pratiquement n'importe quel code Java à tous) pourraient potentiellement jeter unNullPointerException
. Seulement RMI code pouvez jeter unRemoteException
. C'est un tout petit sous-ensemble de "l'ensemble du code."Lors de l'écriture du RMI bibliothèques, les concepteurs ont décidé de faire le code client s'attendre à faire face à ces exceptions. Compte tenu de la nature de l'exécution de code à distance, je pense que c'est raisonnable.
La façon dont je le comprends c'est:
Par exemple, NullPointerExceptions peut toujours être évités et sont donc décoché exceptions. Un RemoteException pourrait se produire quand il ya une panne de réseau, qui ne peuvent être raisonnablement évitée avant l'appel de la méthode et, par conséquent, est vérifiée.
Outre
RemoteException
seulement l'application du code dejava.rmi
etjavax.rmi
les paquets (et leurs sous-paquets),RemoteException
est un type deIOException
à l'instar deSocketException
est... et tous lesIOException
s sont vérifiées exceptions.