Java-programmerare tillbringar mycket av sin utveckling tid att planera lämpliga undantagshantering, från undantag som uppstår i biblioteken de använder för att planera vilka undantag de ska generera med sin egen kod . Medan de flesta Java- kod behandlas gemensamma undantag , så som uppkommer fil fel eller null referenser är RemoteException mindre vanligt förekommande . Som sådan är det svårt för Java -programmerare för att få ett grepp om när det är kastas och vad det kan betyda
lite bakgrund om Remoting
Remoting är en av de " mörka konsterna " 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 dig det . Detaljerna är ganska otäckt , men kontentan av det är enkel: ett program på en dator uppmanar kod på en annan dator .
För att underlätta diskussionen lite , kommer termen " kund " hänvisar till tillämpningen programmeraren är att utveckla, och "server " kommer att hänvisa till ansökan programmeraren kommunicerar med .
en inblick i hur Java Remoting fungerar
Detaljerna i att skriva ett Java- program som utför remoting är utanför ramen för denna artikel , men den underliggande begreppen är värda täcker . En avlägsen objekt representeras av ett gränssnitt . Utvecklaren kommer att få en instans av gränssnittet och anropa en metod på den .
Denna inbjudan kommer att skicka förfrågan till servern , som behandlar eventuella parametrar ( och returnera ett resultat om det behövs) . Processen för att skicka objekt /parametrar till och från servern heter " rangering " , och processen att ta rangeras data och översätta den till användbara föremål kallas " unmarshalling " .
Orsaker
Naturligtvis kan saker och ting 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 ( ) med hjälp av RMI , och versionen på den dator som du kommunicerar med inte har a. foo ( ) definierade , saker går sönder . En annan möjlighet är att ett fel uppstod på servern programmet , till exempel en databas problem med anslutningen.
När det händer får du en RemoteException eller en av dess underklasser .
Flavors of RemoteException
Det finns olika underklasser RemoteException att hantera olika situationer som kan uppstå ( se avsnittet Resurser för en fullständig 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 redovisas i den anropade metoden underskrift ( dvs en oskyddad runtime undantag ) inträffar en UnexpectedException kommer att kastas . -det kan vara ett NullPointerException på servern slut , till exempel
Handling 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 betraktar de olika RemoteException underklasserna som arbetar med 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 framträdande 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öka att hantera en UnknownHostException i en specialiserad sätt . En annan möjlighet skulle kunna vara en generisk RemoteException handler som kan ta olika åtgärder utifrån de specifika undantag påträffas.