andbin
27-04-2007, 15:05
Facendo delle prove con StringBuffer/StringBuilder, oggi ho notato una strana differenza tra le eccezioni che i metodi in overload insert() possono lanciare.
Prendiamo un StringBuffer (succede la stessa cosa con StringBuilder):
StringBuffer sbuf = new StringBuffer ("aaa");
Se provo a inserire un boolean così:
sbuf.insert (10, true);
lancia una eccezione StringIndexOutOfBoundsException
Se provo a inserire un char così:
sbuf.insert (10, 'a');
lancia una eccezione ArrayIndexOutOfBoundsException
Perché c'è questa discrepanza tra le eccezioni??? E se provo ad inserire un char[], lancia StringIndexOutOfBoundsException.
Ora ... è chiaro che in questi casi basta catturare IndexOutOfBoundsException che è la superclasse di entrambe.
Mi chiedevo solo perché sono diverse .... c'è un motivo particolare?? una dimenticanza di chi ha sviluppato StringBuffer/Builder??
Prendiamo un StringBuffer (succede la stessa cosa con StringBuilder):
StringBuffer sbuf = new StringBuffer ("aaa");
Se provo a inserire un boolean così:
sbuf.insert (10, true);
lancia una eccezione StringIndexOutOfBoundsException
Se provo a inserire un char così:
sbuf.insert (10, 'a');
lancia una eccezione ArrayIndexOutOfBoundsException
Perché c'è questa discrepanza tra le eccezioni??? E se provo ad inserire un char[], lancia StringIndexOutOfBoundsException.
Ora ... è chiaro che in questi casi basta catturare IndexOutOfBoundsException che è la superclasse di entrambe.
Mi chiedevo solo perché sono diverse .... c'è un motivo particolare?? una dimenticanza di chi ha sviluppato StringBuffer/Builder??