? Programadores Java gastam muito do seu tempo de desenvolvimento de planejamento de tratamento de exceção o caso, a partir de exceções que surgem nas bibliotecas que utilizam para planejamento que as exceções que vai gerar com seu próprio código. Enquanto a maioria de código Java lida com exceções comuns, de tal forma que surgem a partir de erros de arquivo ou referências nulas , o RemoteException é menos comumente encontrado. Como tal, é difícil para os programadores Java para obter um firme aperto de quando é jogado eo que isso poderia significar . Um pouco de fundo sobre Remoting
Remoting é uma das " artes negras " de programação de computadores para muitos desenvolvedores . Na verdade , é fácil para os desenvolvedores a passar por uma carreira inteira sem se preocupar com isso. Os detalhes são bastante desagradável , mas a essência do que é simples: . Um programa em um computador chama o código em outro computador
Para aliviar um pouco a discussão , o termo "cliente" vai se referir ao aplicativo o programador é desenvolvimento, e "servidor" irá se referir ao requerimento, o programador está se comunicando.
um relance Como Java Remoting Obras
os detalhes de como escrever um programa Java que realiza a comunicação remota estão além do escopo deste artigo , mas os conceitos subjacentes valem cobertura. Um objecto remoto é representado por uma interface . O desenvolvedor irá obter uma instância da interface e chamar um método nele.
Esta chamada vai enviar a solicitação para o servidor, que irá processar todos os parâmetros ( e retornar um resultado , se necessário) . O processo de envio de objetos /parâmetros de e para o servidor é chamado de " triagem " , eo processo de levar os dados mobilizados e traduzi -lo de volta aos objetos utilizáveis é chamado de " unmarshalling " .
< Br > Causas
claro, as coisas sempre podem dar errado. Talvez um programa chama uma função que não existe no outro computador . Por exemplo, se você tentar chamar a.foo () usando RMI , ea versão no computador que você está se comunicando com não tem a.foo () definido , as coisas quebram. Outra possibilidade é que ocorreu um erro no programa do servidor, como um problema de conexão de dados.
Quando isso acontece, você vai ter um RemoteException ou uma de suas subclasses.
sabores da RemoteException
Existem diferentes subclasses de RemoteException para lidar com diversas situações que podem ocorrer ( consulte a seção Recursos para uma lista exaustiva de subclasses ) . Por exemplo, se ocorrer um problema durante a triagem ou unmarshalling os objetos , um MarshalException ou UnmarshalException serão lançados respectivamente. Se ocorrer uma exceção que não é declarado na assinatura do chamado do método (ou seja , uma exceção em tempo de execução desmarcada ), um UnexpectedException será lançada - este poderia ser um NullPointerException na extremidade do servidor , por exemplo
< . br> RemoteExceptions Manuseio
Enquanto prática geral Java recomenda pegar o exemplo mais especializado de uma exceção , isto pode ser difícil de conseguir quando se trabalha com RMI . Há demasiadas excepções potenciais a considerar quando se olha para as várias subclasses RemoteException que lidar com eles individualmente , provavelmente não vale a pena o esforço.
Dito isto, um desenvolvedor pode se concentrar em áreas de problemas potenciais que podem ser mais ou menos evidente durante o desenvolvimento . Por exemplo, na primeira tentativa de uma chamada de método remoto ( talvez na inicialização do aplicativo) , o desenvolvedor pode tentar lidar com um UnknownHostException de forma especializada. Outra possibilidade poderia ser um manipulador RemoteException genérico que poderia tomar ações diferentes com base na exceção específica encontrada.