Bonjour,
J'ai une question concernant la capture des exceptions.
Voici un exemple de code que j'ai fait ci-dessous.
Il permet d'envoyer une requette Http à un serveur.
J'ai utilisé l'API URLConnection.
Mais bon ce n'est pas la compréhension du code qui est important mais plutôt comment capturer correctement les exceptions.
Comme vous pouvez le voir, j'ai capturé avec des try,catch.
Prenons un exemple try, catch:
Ici je capture l'exception : IOException, qui provient des méthodes openConnection(),getOutputStream() et getInputStream().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 catch (IOException ioe) { logger.severe( "An I/O exception occurs when calling openConnection()or getOutputStream()or getInputStream()");
Mes questions sont:
-Lors du d'un problème, supposons que cette exception est capturé alors comment je peux savoir de quelle méthode provient l'exception?
Je ne comprend pas comment on peut différencier l'exception de ces 3 méthode car elles peuvent généré toutes les 3 une IOException.
Comment je peux faire un catch pour chacune de ces méthode?
-Je sais que IOException a beaucoup de sous-classes donc comment je peux savoir à quelle sous classe correspond l'exception levée par mes 3 méthodes?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 URL url; URLConnection conn = null; PrintStream printStream = null; InputStream inputStream = null; try { url = new URL(servicePath); conn = url.openConnection(); //this url connection will be use for output conn.setDoOutput(true); conn.setDoInput(true); printStream = new PrintStream(conn.getOutputStream()); printStream.println(request); printStream.flush(); //get the response from the service inputStream = conn.getInputStream(); printStream.close(); logger.info("Request SES Registration sent at: " + servicePath); } catch (UnknownServiceException use) { logger.severe( "The protocol does not support output when calling getOutputStream()"); } catch (ConnectException ce) { logger.severe("Connection refused at " + servicePath + " when calling getOutputStream()"); } catch (MalformedURLException mue) { logger.severe("The URL is malformed when calling URL()"); } catch (IOException ioe) { logger.severe( "An I/O exception occurs when calling openConnection()or getOutputStream()or getInputStream()"); } catch (IllegalStateException ise) { logger.severe( "Already connected when calling setDoOutput()or setDoInput()"); }
Partager