? Java-programmører bruger meget af deres udvikling tid på at planlægge passende exception handling fra undtagelser, der opstår i de biblioteker, de bruger til at planlægge , hvilke undtagelser de vil generere med deres egen kode . Mens de fleste Java kode omhandler fælles undtagelser , således at der opstår fra fil fejl eller null referencer , at RemoteException er mindre almindeligt stødt . Som sådan, er det svært for Java programmører til at få en klar forståelse af , når det er smidt , og hvad det kan betyde . Lidt baggrund om Remoting
Remoting er en af de " mørke kunst " af edb-programmering til en masse udviklere. Faktisk er det nemt for udviklere at gå gennem en hel karriere uden at bekymre sig om det. Detaljerne er temmelig ubehagelig , men kernen i det er simpelt : . Et program på en computer kræver kode på en anden computer
For at lette diskussionen lidt , vil udtrykket "klient " til ansøgningen programmøren er udvikle og "server" vil henvise til ansøgningen programmøren kommunikerer med .
et glimt hvordan Java Remoting arbejder
detaljerne i at skrive et Java -program, der udfører Remoting er uden for rammerne af denne artikel, men de underliggende begreber er værd dækker. En remote objekt er repræsenteret ved en grænseflade . Udvikleren vil få en instans af interface og kalde en metode på det.
Denne indkaldelse vil sende anmodningen til serveren, som vil behandle eventuelle parametre ( og returnere et resultat, hvis det er nødvendigt) . Processen med at sende objekter /parametre til og fra serveren kaldes " dirigering " og processen med at tage de rangeres data og omsætte det tilbage til brugbare objekter kaldes " unmarshalling " .
< Br > Årsager
selvfølgelig kan tingene altid gå galt. Måske et program kalder en funktion , der ikke findes på den anden computer . For eksempel, hvis du forsøger at kalde a.foo ( ) ved hjælp af RMI , og versionen på den computer , du kommunikerer med, ikke har a.foo () definerede ting i stykker. En anden mulighed er, at der opstod en fejl på serveren program, såsom en database -forbindelse problem.
Når dette sker, får du en RemoteException eller en af dens underklasser .
Flavors of RemoteException
p Der er forskellige underklasser af RemoteException at håndtere forskellige situationer, der kan opstå (se afsnittet Ressourcer for en udtømmende liste over underklasser ) . For eksempel, hvis der opstår et problem , mens rangering eller unmarshalling genstandene vil en MarshalException eller UnmarshalException blive smidt henholdsvis . Hvis en undtagelse , der ikke er anmeldt i den kaldte metode underskrift (dvs. en ukontrolleret runtime undtagelse) opstår, vil en UnexpectedException blive kastet - det kunne være en NullPointerException på serveren ende , for eksempel
< . br > Håndtering RemoteExceptions
almen Java praksis anbefaler at fange de mest specialiserede instans af en undtagelse , kan det være vanskeligt at opnå , når du arbejder med RMI . Der er for mange mulige undtagelser at overveje, når man ser på de forskellige RemoteException underklasser , der beskæftiger sig med dem enkeltvis sandsynligvis ikke værd.
Det er sagt, en udvikler kan fokusere på potentielle problemområder , der kan være mere eller mindre tydeligt under udvikling . For eksempel, i det første forsøg på en remote metode opkald ( måske i ansøgningen initialisering ), kan bygherren forsøge at håndtere en UnknownHostException på et specialiseret måde. En anden mulighed kunne være en generisk RemoteException handler, der kunne tage forskellige handlinger er baseret på den specifikke stødt undtagelse.