Java-programmeurs besteden veel van hun ontwikkelingstijd van plan passende exception handling , van uitzonderingen die zich voordoen in de bibliotheken die zij gebruiken om de planning van die uitzonderingen zij met hun eigen code kunt genereren . Terwijl de meeste Java-code betrekking op gemeenschappelijke uitzonderingen, zoals die voortvloeien uit bestand fouten of null referenties , het RemoteException minder vaak voorkomen . Als zodanig is het moeilijk voor Java- programmeurs om een stevige greep van wanneer het is gegooid en wat het zou kunnen betekenen krijgen . Een beetje achtergrond op Remoting Remoting is een van de " donkere kunsten " van de computer programmeren om veel ontwikkelaars . In feite , is het gemakkelijk voor ontwikkelaars om te gaan door middel van een hele carrière zonder zorgen over het. De details zijn behoorlijk smerig , maar de essentie ervan is simpel : . Een programma op een computer noemt code op een andere computer Om het iets makkelijker een beetje , zal de term " klant" staan voor de toepassing van de programmeur is ontwikkelen , en " server" zal verwijzen naar de toepassing van de programmer communiceert met . een blik op Hoe Java Remoting werken de details van het schrijven van een Java-programma dat voert remoting vallen buiten het bestek van dit artikel , maar de achterliggende concepten zijn de moeite waard bekleding . Een externe object wordt gerepresenteerd door een interface . De ontwikkelaar zal een instantie van de interface te verkrijgen en bel een methode op. Deze oproep zal het verzoek naar de server , waar alle parameters zullen verwerken ( en een resultaat te retourneren indien nodig ) . Het proces van het verzenden van objecten /parameters naar en van de server wordt " rangeren " genoemd , en het proces van het nemen van de marshalled gegevens en het vertalen van het terug naar voorwerpen bruikbaar is " unmarshalling " genoemd . < Br > Oorzaken Natuurlijk kan dingen altijd mis gaan . Misschien een programma noemt een functie die niet bestaat op de andere computer . Bijvoorbeeld , als je probeert te a.foo ( ) bellen met behulp van RMI , en de versie op de computer die u communiceert met geen a.foo ( ) gedefinieerd , dingen breken. Een andere mogelijkheid is dat een fout is opgetreden op de server -programma , zoals een database connectie probleem . Wanneer dit gebeurt , heb je een RemoteException of een van de subklassen krijgen . smaken van RemoteException Er zijn verschillende subklassen van RemoteException om verschillende situaties die zich kunnen voordoen ( zie het gedeelte Bronnen voor een limitatieve lijst van de subklassen ) te behandelen . Bijvoorbeeld , als er een probleem optreedt tijdens het rangeren of unmarshalling de objecten , een MarshalException of UnmarshalException worden respectievelijk geworpen . Als een uitzondering die niet wordt verklaard in de handtekening van de zogenaamde methode ( dwz een niet-gecontroleerde uitzondering runtime ) optreedt , zal een UnexpectedException gegooid worden - dit kan een NullPointerException op de server einde zijn , bijvoorbeeld < . br > Handling RemoteExceptions Terwijl de algemene Java te werken is de meest gespecialiseerde instantie van een uitzondering vangen , kan dit moeilijk te bereiken bij het werken met RMI zijn. Er is te veel potentiële uitzonderingen te overwegen als we kijken naar de verschillende RemoteException subklassen dat het omgaan met hen individueel waarschijnlijk is de moeite niet waard . Dat gezegd hebbende , een ontwikkelaar kan zich richten op mogelijke probleemgebieden die meer of minder kunnen zijn voor de hand tijdens de ontwikkeling . Bijvoorbeeld , in de eerste poging om een werkwijze op afstand call ( misschien in initialiseren van de toepassing ) , de ontwikkelaar kan proberen een UnknownHostException in een gespecialiseerde manier verwerken . Een andere mogelijkheid zou een generieke RemoteException handler die verschillende acties op basis van de specifieke uitzondering aangetroffen zou kunnen nemen zijn.
|