Quote Originariamente inviata da Mirco993 Visualizza il messaggio
Quindi creo tipo "MyException extends - le varie eccezioni -"?
No, la tua possibile es. ReadElementException può estendere Exception (o magari IOException). Poi l'eccezione di più basso livello (la "causa") la passi al costruttore della tua eccezione.

Guarda ad esempio un sorgente di IOException, vedi che ha 4 costruttori, che sono quelli tipici: nessun argomento / String / String + Throwable / solo Throwable. Non si è obbligati ovviamente a metterli tutti, dipende dal senso e uso della eccezione.

Quote Originariamente inviata da Mirco993 Visualizza il messaggio
La creazione del file, poi, andrebbe poi in MyException o in ReaderWriter (con un metodo apposito)?
Sicuramente non nel readElement. E comunque non ha granché senso (in questo tuo scenario) creare un file "vuoto" tanto per crearlo come "default". La serializzazione degli oggetti si basa su un protocollo di dati ben preciso che prevede in testa allo stream un "header" di 4 byte speciali. Se fai il file vuoto con f.createNewFile() e poi NON vai a serializzare davvero oggetti, al prossimo readElement il file c'è (non becchi FileNotFoundException) ma l'header è mancante e il costruttore di ObjectInputStream si schianta perché è già lì che cerca di leggere l'header.

Quote Originariamente inviata da Mirco993 Visualizza il messaggio
La mia idea di partenza era di fare una classe che, indipendentemente dal file e dal tipo degli elementi all'interno dello stesso, potesse leggerli, scriverli, aggiungerli...Le istanze della classe ReaderWriter non avrebbero dovuto differire, sarebbe stata solo una classe che racchiudeva dei metodi utili.
Puoi fare: classe non generica, poi readElement "generico" che riceve Class e filename. Non c'è nulla di male di per sé.