? Programmatori Java spendono molto del loro tempo allo sviluppo di pianificazione gestione delle eccezioni del caso, da eccezioni che sorgono nelle librerie che utilizzano per pianificare quali eccezioni faranno generano con il proprio codice . Mentre la maggior parte delle offerte di codice Java con eccezioni comuni , in modo tale che derivano da errori di file o riferimenti nulli , il RemoteException è meno comunemente incontrate. Come tale , è difficile per i programmatori Java per ottenere una solida conoscenza di quando è gettato e che cosa potrebbe significare . Un po 'su Remoting
Remoting è una delle "arti oscure" della programmazione per un sacco di sviluppatori . In realtà, è facile per gli sviluppatori di passare attraverso tutta una carriera senza preoccuparsi di esso . I dettagli sono piuttosto brutta , ma il succo del discorso è semplice : . Un programma su un computer chiama il codice su un altro computer
Per facilitare la discussione un po ' , il termine "client" si riferisce all'applicazione del programmatore è via di sviluppo, e "server" si riferiscono alla domanda il programmatore comunica con .
uno sguardo a come Java Remoting funziona
I dettagli di scrivere un programma Java che svolge servizi remoti sono oltre la portata di questo articolo, ma i concetti di fondo sono la pena di copertura . Un oggetto remoto è rappresentato da una interfaccia. Lo sviluppatore deve ottenere un'istanza dell'interfaccia e chiamare un metodo su di esso .
Questa chiamata invierà la richiesta al server , che elabora i parametri ( e restituire un risultato , se necessario) . Il processo di invio di oggetti /parametri da e verso il server si chiama " smistamento " , e il processo di prendere i dati di marshalling e tradurre di nuovo utilizzabile oggetti si chiama " unmarshalling " .
< Br > Cause
Naturalmente , le cose possono sempre andare male . Forse un programma chiama una funzione che non esiste su un altro computer . Per esempio, se si tenta di chiamare a.foo () utilizzando RMI , e la versione sul computer che stai comunicando con non avere a.foo ( ) definita , le cose si rompono . Un'altra possibilità è che si è verificato un errore del programma server , come ad esempio un problema di connessione al database.
Quando questo accade , si otterrà un RemoteException o una delle sue sottoclassi .
sapori di RemoteException
Ci sono diverse sottoclassi di RemoteException per gestire le varie situazioni che possono verificarsi (vedi la sezione Risorse per un elenco esaustivo delle sottoclassi ) . Per esempio, se si verifica un problema durante smistamento o unmarshalling gli oggetti , una MarshalException o UnmarshalException saranno gettati rispettivamente . Se si verifica un'eccezione che non viene dichiarato in firma il cd del metodo (cioè una eccezione di runtime non selezionato) , un UnexpectedException sarà gettato - questo potrebbe essere un NullPointerException sul lato server , ad esempio
< . br> Manipolazione RemoteException
Mentre medicina generale Java consiglia di prendere l'esempio più specializzata di un'eccezione , questo può essere difficile da raggiungere quando si lavora con RMI . Ci sono troppe possibili eccezioni da considerare quando si esaminano le varie sottoclassi RemoteException che trattare con loro individualmente probabilmente non vale la pena .
Ciò detto, uno sviluppatore può concentrarsi su potenziali aree problematiche che possono essere più o meno evidente durante lo sviluppo . Ad esempio, nel primo tentativo di chiamata metodo remoto (forse in inizializzazione dell'applicazione) , lo sviluppatore può provare a gestire un UnknownHostException in maniera specializzata. Un'altra possibilità potrebbe essere un gestore RemoteException generico che potrebbe intraprendere azioni diverse in virtù di un'eccezione specifica incontrato.