Imaginez que j'ai les méthodes:exception java question enchaînant
public static void funcA() {...}
public static void funcB()
{
byteBuffer.wrap(someByteArray, 0, someByteArra.length);
}
API JAVA:
public static ByteBuffer wrap(byte[]array, int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}
chaîne de fonctions
: FoncB() -> ByteBuffer.wrap()
Ma question est comment venir funcB n'a pas besoin de faire un bloc try-catch autour de cette méthode java api qui déclenche une exception. funcB compile bien sans un bloc try-catch. Je crois que la réponse a à voir avec le fait que la méthode java api jette une exception MAIS N'EST PAS DÉCLARÉE comme "throws IndexOutOfBoundsException"
chaîne de fonction: funcA() -> funcB() -> ByteBuffer.wrap (..
Ma prochaine question est quand je DO changer funcB à "funcB() throws IndexOutOfBoundsException" pourquoi funcA n'a pas besoin d'attraper l'exception levée de funcB? Est-ce que le compilateur creuse profondément et se rend compte que ByteBuffer.wrap (...) n'est pas déclaré comme "wrap() throws IndexOutOfBoundsException" de sorte que tous les appelants n'ont pas réellement besoin d'attraper quoi que ce soit même les sous-appelants (funcB dans ce cas) sont déclarés comme "funcB throws IndexOutOfBoundsException"? Désolé, si c'était confus ou difficile à comprendre.
Aidez-nous s'il vous plaît.
JBU
alors à quoi bon jeter des clauses s'il y a des exceptions qui n'ont pas besoin d'être interceptées? – jbu
Parfois, vous voulez l'OPTION d'attraper l'exception sans avoir à le repousser explicitement. –
Ah, ce serait une bonne option. Je peux le voir mener à la paresse cependant. – jbu