La parte di queste eccezioni che mi infastidisce di più è che danneggia la copertura del mio codice.
Quando diventerò compulsivo riguardo alla copertura, rilascerò la prova / cattura che "non può mai accadere" (... o solo se sto usando una JVM mutante che in qualche modo ha dimenticato di includere "US-ASCII ") in una classe e un metodo che incapsula quello try / catch e sostituisce l'eccezione verificata in uno dei modi menzionati qui (di solito lanciando un'eccezione non controllata con un messaggio snide).
Quindi la copertura del mio codice subisce un duro colpo nella classe di utilità, ma non in tutti i riferimenti a quell'operazione sparsi nel mio codice.
A volte mi prendo del tempo per fare il rollup di operazioni simili in una classe che ha in realtà una semantica coerente. Ma dato che è abbastanza ovvio per i miei compagni quello che succede, di solito lo terrò il più semplice che posso e amp; non preoccuparti tanto del miglior design possibile.
Tuttavia, come commento citato, Guava & altre biblioteche hanno modi per mitigare questo dolore, ma questa è fondamentalmente la stessa strategia. Sposta il fastidio fuori scena in modo che il tuo codice principale non subisca il colpo di copertura.