? Java-programmerere bruke mye av sin utvikling tid på å planlegge riktig håndtering av unntak fra unntakene som oppstår i bibliotekene de bruker til å planlegge hvilke unntak de vil generere med sin egen kode . Mens de fleste Java- kode omhandler vanlige unntak, slik som oppstår fra filen feil eller null referanser , er RemoteException mindre vanlig forekommende . Som sådan , er det vanskelig for Java- programmerere for å få en god forståelse av når den er kastet og hva det kan bety . Litt bakgrunnsinformasjon om Remoting
Remoting er en av de " mørke kunst " av dataprogrammering til mange utviklere . Faktisk er det enkelt for utviklere å gå gjennom en hel karriere uten å bekymre det . Detaljene er ganske ekkel, men hovedpunkt av det er enkelt: . Et program på en datamaskin kaller koden på en annen datamaskin
å lette diskusjonen litt, vil begrepet " klient" refererer til søknaden programmerer er utvikle og "server" vil referere til søknaden programmereren kommuniserer med .
et glimt på hvordan Java Remoting anlegg
detaljene for å skrive et Java -program som utfører Remoting er utenfor omfanget av denne artikkelen , men de underliggende konseptene er verdt dekker. Et eksternt objekt er representert ved et grensesnitt . Utbygger vil få en forekomst av grensesnittet og kalle en metode på den.
Denne samtalen vil sende forespørsel til serveren , som vil behandle eventuelle parametere ( og returnere et resultat hvis nødvendig ) . Prosessen med å sende objekter /parametre til og fra serveren kalles " marshalling " , og prosessen med å ta de formidlede data og oversetter det tilbake til brukbare gjenstander kalles " unmarshalling " .
Årsaker
Selvfølgelig kan ting alltid gå galt . Kanskje ett program kaller en funksjon som ikke finnes på den andre maskinen . For eksempel, hvis du prøver å ringe a.foo ( ) ved hjelp av RMI , og versjonen på datamaskinen du kommuniserer med har ikke a.foo ( ) definert , ting bryte. En annen mulighet er at det oppsto en feil på serveren program , for eksempel en database tilkobling problem .
Når dette skjer , vil du få en RemoteException eller en av dens subklasser .
smaker av RemoteException
p Det er forskjellige underklasser av RemoteException å håndtere ulike situasjoner som kan oppstå ( se Resources for en uttømmende liste over underklasser ) . For eksempel, hvis det oppstår et problem mens formidlinger eller unmarshalling objektene , vil en MarshalException eller UnmarshalException bli kastet henholdsvis . Hvis et unntak som ikke er deklarert i såkalte metodens signatur (dvs. en ukontrollert runtime unntak ) oppstår , vil en UnexpectedException bli kastet - dette kan være en NullPointerException på serveren slutten , for eksempel
< . br > Håndtering RemoteExceptions
når generell Java praksis anbefaler å fange de mest spesialiserte forekomst av et unntak , kan dette være vanskelig å oppnå når du arbeider med RMI . Det er for mange potensielle unntak å vurdere når du ser på de ulike RemoteException underklasser som arbeider med dem individuelt sannsynligvis ikke er verdt innsatsen .
Når det er sagt , en utvikler kan fokusere på potensielle problemområder som kan være mer eller mindre åpenbart under utvikling. For eksempel , i det første forsøket på en ekstern metode samtale ( kanskje i søknaden initialisering ) , kan utvikleren prøver å håndtere en UnknownHostException i et spesialisert måte. En annen mulighet kan være en generisk RemoteException handler som kunne ta ulike tiltak basert på den spesifikke unntak oppstått .