Pourquoi ByteArrayOutputStream
. close
est déclaré avec throws IOException
? D'abord, de facto, il ne peut rien lancer, car son corps est vide. Deuxièmement, de jure, il ne peut rien lancer, car sa documentation dit "fermer un ByteArrayOutputStream n'a aucun effet".Pourquoi ByteArrayOutputStream.close() throws IOException?
N'est-ce pas une erreur (non importante, mais quand même)?
Oui, je comprends que sa superclasse implémente OutputStream
Closable
, la méthode close
qui est autorisé à jeter IOException
. Mais personne n'interdit de l'ignorer (dans ByteArrayOutputStream
) avec la méthode close
sans spécification de projection. (Même si la suppression d'un méthode plus-lancer avec une méthode moins jeter était interdit dans certaines versions anciennes de Java, en changeant ByteArrayOutputStream
. close
définition maintenant ne sera pas le changement incompatible.)
si la définition a été modifiée, les codes existants dont la prise IOException va se compiler erreur bloc catch 'Inaccessible pour IOException. Cette exception n'est jamais levée depuis le corps de l'instruction try. – saka1029
@ saka1029: Je pense que vous êtes sur la bonne voie. – Holger
@ saka1029, vous avez raison (je pensais que cela causerait un avertissement, pas une erreur). – Sasha