? Java programmerare tillbringar mycket av sin utveckling tid att planera lämplig undantagshantering , från undantag som uppstår på biblioteken de använder för att planera vilka undantag de ska generera med sin egen kod . Medan de flesta Java-kod behandlar vanliga undantag , så att uppstå fel fil eller null referenser , är RemoteException mindre vanligt förekommande . Som sådan är det svårt för Java programmerare att få ett fast grepp om när det kastas och vad det kan betyda . Lite bakgrund om Remoting
Remoting är en av de " svartkonster " av datorprogrammering till en hel del utvecklare . I själva verket är det enkelt för utvecklare att gå igenom en hel karriär utan att oroa det . Detaljerna är ganska otäck , men kontentan av det är enkel : . Ett program på en dator anropar kod på en annan dator
att underlätta diskussionen lite , kommer termen " klient " hänvisar till ansökan programmeraren är utveckla , och " server " kommer att hänvisa till ansökan programmeraren kommunicerar med . Addera en inblick i hur Java Remoting anläggningsarbeten
detaljerna för att skriva ett Java -program som utför remoting är utanför ramen för denna artikel , men de underliggande begreppen är värda täcker . Ett fjärrobjekt representeras av ett gränssnitt . Utvecklaren kommer att få en instans av gränssnittet och anropa en metod på det .
Denna inbjudan kommer att skicka en begäran till servern , vilket kommer att behandla några parametrar ( och returnera ett resultat om det behövs ) . Processen för att skicka objekt /parametrar till och från servern kallas " lotsning " , och processen att ta de rangeras uppgifter och översätta det tillbaka till användbara föremål kallas " unmarshalling " .
Orsaker
Naturligtvis kan saker går alltid fel . Kanske ett program anropar en funktion som inte finns på den andra datorn . Till exempel , om du försöker ringa a.foo ( ) använder RMI , och version på den dator du kommunicerar med inte har a.foo ( ) definierat , saker går sönder . En annan möjlighet är att ett fel uppstod på servern program , t.ex. en databas anslutning problem .
När detta händer , får du ett RemoteException eller en av dess underklasser .
smaker av RemoteException
p Det finns olika underklasser av RemoteException att hantera olika situationer som kan uppstå ( se avsnittet Resurser för en uttömmande lista över underklasser ) . Till exempel, om ett problem uppstår under rangering eller unmarshalling föremålen kommer en MarshalException eller UnmarshalException kastas respektive. Om ett undantag som inte har deklarerats i den anropade metoden underskrift ( dvs. , en okontrollerad körningsundantag ) inträffar , kommer en UnexpectedException kastas - detta kan vara en NullPointerException på servern slut, till exempel <
. br > Hantering RemoteExceptions
Medan allmän Java praktiken rekommenderar att fånga den mest specialiserade instans av ett undantag , kan detta vara svårt att uppnå när man arbetar med RMI . Det finns alltför många potentiella undantag att tänka på när man tittar på de olika RemoteException underklasser som behandlar dem individuellt förmodligen inte är värt ansträngningen .
Som sagt , en utvecklare kan fokusera på potentiella problemområden som kan vara mer eller mindre uppenbart under utveckling . Till exempel i det första försöket till en avlägsen metodanrop ( kanske i ansökan initiering ) , kan utvecklaren försöker hantera en UnknownHostException på ett specialiserat sätt . En annan möjlighet skulle kunna vara en generisk RemoteException hanterare som kan ta olika åtgärder baserade på den stött specifika undantag. Addera