? Programadores de Java pasan mucho de su tiempo de desarrollo de la planificación de manejo de excepciones apropiado , de las excepciones que se plantean en las bibliotecas que utilizan para la planificación de las excepciones que van a generar con su propio código. Aunque la mayoría de ofertas de código Java con excepciones comunes , de forma que se derivan de errores de archivo o referencias nulas , el RemoteException es menos comúnmente encontrados . Por lo tanto , es difícil para los programadores de Java para obtener un conocimiento firme de cuando se produce y lo que podría significar . Un poco de historia sobre Remoting
Remoting es una de las "artes oscuras" de la programación de computadoras a una gran cantidad de desarrolladores. De hecho , es fácil para los desarrolladores para ir a través de toda una carrera sin tener que preocuparse de ello. Los detalles son bastante desagradable , pero el quid de la cuestión es simple: . Un programa en un equipo llama a código en otro equipo
Para aliviar un poco la discusión , el término "cliente" se refiere a la aplicación del programador es en desarrollo, y " servidor " se referirá a la aplicación del programador está comunicando.
un vistazo a cómo funciona Java Remoting
los detalles de escribir un programa Java que realiza la comunicación remota están más allá del alcance de este artículo , pero los conceptos subyacentes son dignos de cobertura. Un objeto remoto está representado por una interfaz. El promotor obtener una instancia de la interfaz y llamar a un método en ella.
Llamada enviará la solicitud al servidor , que procesará los parámetros (y devolver un resultado si es necesario) . El proceso de envío de objetos /parámetros desde y hacia el servidor se llama " Reclutamiento " , y el proceso de tomar los datos Marshalled y traducir de nuevo a utilizables objetos se llama " unmarshalling " .
< Br > Causas
Por supuesto , las cosas siempre pueden salir mal. Tal vez un programa llama a una función que no existe en el otro equipo . Por ejemplo, si se intenta llamar a.foo ( ) utilizando RMI , y la versión en el equipo que te estás comunicando no tiene por a.foo () define , las cosas se rompen . Otra posibilidad es que se produjo un error en el programa de servidor, como un problema de conexión de base de datos .
Cuando esto sucede, usted obtendrá una RemoteException o una de sus subclases .
Sabores de RemoteException
Hay diferentes subclases de RemoteException para manejar diversas situaciones que pueden ocurrir (ver la sección de Recursos para una lista exhaustiva de las subclases ) . Por ejemplo , si se produce un problema al cálculo de referencias o unmarshalling los objetos , una MarshalException o UnmarshalException serán lanzados respectivamente. Si se produce una excepción que no se declara en la firma de la llamada de método (es decir , una excepción en tiempo de ejecución sin control ), un UnexpectedException será lanzado - esto podría ser una NullPointerException en el lado del servidor , por ejemplo
< . br> Manipulación RemoteExceptions
Mientras que la práctica general de Java recomienda controlar el caso más especializado de una excepción , esto puede ser difícil de lograr cuando se trabaja con RMI . Hay demasiadas excepciones posibles a tener en cuenta cuando se mira a las diversas subclases RemoteException que tratar con ellos de forma individual probablemente no vale la pena el esfuerzo.
Dicho esto, un desarrollador puede concentrarse en áreas con problemas potenciales que pueden ser más o menos evidente durante el desarrollo. Por ejemplo , en el primer intento de una llamada a un método remoto ( tal vez en la inicialización de la aplicación) , el desarrollador puede tratar de manejar un UnknownHostException de forma especializada . Otra posibilidad podría ser un controlador RemoteException genérico que podría tomar diferentes acciones con base en la excepción específica encontrada .