View Single Post
Old 02-03-2006, 15:52   #1
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
[JAVA] Chiarimento sugli override

Sto vedendo la questione dei metodi di override in Java. Il concetto di override, in generale, mi è chiaro. Quello che mi è un po' meno chiaro sono le restrizioni per quanto riguarda le eccezioni. Il mio libro, per le eccezioni sugli override, riporta: "Can reduce or eliminate. Must not throw new or broader checked exceptions"

Prendiamo per esempio:
Codice:
import java.io.*;

class SuperClass
{
    void doSomething () throws IOException  { }
}

class SubClass extends SuperClass
{
    ....override di doSomething....
}
Questi override sono OK:
(1) void doSomething () { }
(2) void doSomething () throws FileNotFoundException { }
(3) void doSomething () throws FileNotFoundException, EOFException { }

mentre questi sono errati:
(4) void doSomething () throws Exception { }
(5) void doSomething () throws InterruptedException { }

Se ho capito bene, il perché (4) e (5) sono errati è dovuto al fatto che chi poi userà il metodo doSomething (ad esempio tramite un reference alla classe base) è solamente a conoscenza del fatto che l'eccezione "più larga" che può essere generata è la IOException. Se un override potesse lanciare una eccezione nuova o più "larga", il chiamante non saprebbe/potrebbe gestirla. Giusto?
Ditemi se ho capito!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso