? Java-Programmierer verbringen einen Großteil ihrer Zeit mit der Planung Entwicklung entsprechende Exception Handling von Ausnahmen, die in den Bibliotheken sie verwenden, um die Planung , welche Ausnahmen sie werde mit ihren eigenen Code generieren entstehen . Während die meisten Java-Code befasst sich mit gemeinsamen Ausnahmen, wie die entstehen aus der Datei Fehler oder null Referenzen, ist die RemoteException weniger häufig auftreten . Als solches ist es schwierig für Java-Programmierer einen festen Griff , wenn es weggeworfen, und was es bedeuten könnte, zu bekommen. Ein wenig Hintergrund über Remoting
Remoting ist eine der " dunklen Künste " der Computer-Programmierung , um eine Menge von Entwicklern. In der Tat ist es für Entwickler einfach , durch eine ganze Karriere , ohne sich Gedanken darüber zu gehen. Die Details sind ziemlich böse , aber das Wesentliche ist einfach: . Ein Programm auf einem Computer aufruft Code auf einem anderen Computer Spiele
erleichtern Diskussion ein wenig, wird der Begriff " Client ", um die Anwendung der Programmierer beziehen Entwicklung und "Server" wird auf die Anwendung der Programmierer mit kommuniziert beziehen .
ein Blick auf Wie Java Remoting
Werke Die Details des Schreibens ein Java -Programm, das führt Remoting sind über den Rahmen dieses Artikels sprengen , aber die zugrunde liegenden Konzepte sind es wert Abdeckung . Eine entfernte Aufgabe wird durch eine Schnittstelle dargestellt . Der Entwickler wird erhalten eine Instanz der Schnittstelle und eine Methode auf sie.
Dieser Aufruf wird die Anforderung an den Server zu senden , die werden alle Parameter verarbeiten ( und ein Ergebnis zurückgeben , wenn nötig). Der Prozess des Sendens Objekte /Parameter vom und zum Server wird als " Rangierbahnhof " , und der Prozess der Übernahme der marshalled Daten und übersetzen es zurück zu Objekten einsetzbar heißt " unmarshalling " .
Verursacht
natürlich kann die Dinge immer schief gehen. Vielleicht ein Programm eine Funktion aufruft , die nicht auf dem anderen Computer nicht vorhanden ist. Zum Beispiel, wenn Sie a.foo ()-Aufruf mit RMI , versuchen und die Version auf dem Computer mit der Sie kommunizieren nicht a.foo () definiert , Dinge zerstören . Eine andere Möglichkeit ist, dass ein Fehler auf dem Server-Programm , wie eine Datenbank-Verbindung Problem aufgetreten ist.
Wenn dies geschieht, erhalten Sie eine RemoteException oder einer ihrer Unterklassen .
Flavors of RemoteException
Es gibt verschiedene Unterklassen von RemoteException auf verschiedene Situationen , die auftreten können (siehe Abschnitt Ressourcen für eine erschöpfende Liste der Unterklassen) verarbeiten kann. Zum Beispiel, wenn ein Problem auftritt, während Rangier- oder unmarshalling die Objekte wird ein MarshalException oder UnmarshalException bzw. geworfen werden. Wenn eine Ausnahme , die nicht in der aufgerufenen Methode Unterschrift erklärt wird (dh , eine ungeprüfte Runtime-Ausnahme ) auftritt, wird eine UnexpectedException geworfen werden - dies könnte ein NullPointerException auf dem Server Ende sein, zum Beispiel
< . br> Handhabung RemoteExceptions
Während allgemeine Java Praxis empfiehlt fangen die meisten spezialisierten Instanz einer Exception , kann dies schwer zu erreichen sein , wenn die Arbeit mit RMI . Es gibt zu viele mögliche Ausnahmen zu beachten, wenn man die verschiedenen RemoteException Unterklassen , dass der Umgang mit ihnen einzeln wahrscheinlich nicht die Mühe wert.
Heißt, kann ein Entwickler auf mögliche Problembereiche , die mehr oder weniger kann konzentrieren offensichtlich während der Entwicklung. Zum Beispiel in dem ersten Versuch an einem entfernten Methodenaufruf (vielleicht in der Initialisierung der Anwendung ) , kann der Entwickler versuchen, eine UnknownHostException in einem speziellen Muster zu behandeln. Eine andere Möglichkeit könnte eine generische RemoteException Handler, verschiedene Aktionen auf die spezifische Ausnahme aufgetreten Basis nehmen könnte .