Question

Je le code suivant:

Socket clientSocket = null;
try {
   clientSocket = serverSocket.accept();
} catch (IOException e) {
   System.err.println("Accept failed.");
   System.exit(1);
}

Le code est extrait d'un java.sun .com .

J'ai plusieurs questions concernant la partie courte donnée ci-dessus du code.

  1. Pourquoi nous voulons attraper un IOException. Je pensais que IOException est quelque chose qui peut se produire lorsque nous utilisons des méthodes d'entrée-sortie (pas de méthodes réseau).

  2. Quelle est la différence entre le "System.err.println" et "System.println"?

  3. Dans le catch, nous avons "e". Pourquoi? Avons-nous l'utilisons celle-ci?

Était-ce utile?

La solution

  

1: Pourquoi nous voulons attraper un IOException. Je pensais que IOException est quelque chose qui peut se produire lorsque nous utilisons des méthodes d'entrée-sortie (pas de méthodes réseau).

Mise en réseau est également entrée / sortie. Byte flux à travers une prise de courant.

  

2: Quelle est la différence entre le "System.err.println" et "System.println"

?

Les premières écritures stderr , le second ne existe.

  

3: Dans la déclaration de capture que nous avons "e". Pourquoi? Avons-nous l'utilisons celle-ci?

Pour avoir une référence à l'exception afin que vous puissiez, si nécessaire ou journal réémettre il.

Autres conseils

(a) Vous n'êtes pas 'la création d'un socket serveur' dans ce code, vous acceptez un socket d'un ServerSocket.

(b) qui peut échouer pour beaucoup de raisons, y compris la fermeture du ServerSocket; en cours d'exécution sur IFD; problèmes de pile de réseau; épuisement de la mémoire; ... il jette IOException.

L'une des raisons pour accepter commune de jeter un IOException est en cours d'exécution de descripteurs de fichiers. Il faut deux poignées de fichier pour créer la prise et si vous manquez vous obtenez une erreur comme « Trop de fichiers ouverts »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top