Method Overriding

public class A {
       void doStuf(int number) throws Exception {
       }
}
public class B extends A {
       void doStuf(int number) throws Throwable {
       }
       public static void main(String a[]) throws Throwable {
                   new B().doStuf( 1 );
       }
}

Select the best answer:
A - ) Class Code A does not compile
B - ) Class Code B does not compile
C - ) Class Code A and B does not compile
D - ) Class Code A and B will compile
E - ) Class Code A and B will compile, and run properly

Bom eu acho que é a melhor resposta é

B - ) Class Code B does not compile

A classe Trowable é a superclasse da Exception, desde modo só podemos subscrever um metodo que lance uma exception da mesma classe ou de uma subclasse da mesma. Coma a classe A o metodo doStuf lanca um exception da classe Exception, ele só pode ser subscrito por um metodo com a mesma assinatura e que lance uma exception da classe Excepion ou uma de subclasse da mesma.

Estou correto?

Tb acho q deva ser a letra “b”.
do stuff em A deveria propagar Throwable.

Na verdade a classe B tem que conter todos os Exceptions da classe A OU MENOS!

exemplo:

import java.sql.*;

public class A { 
       void doStuf(int number) throws NumberFormatException, Throwable, SQLException 
       {
       } 
}
public class B extends A { 
       void doStuf(int number) throws Throwable { 
       } 
       public static void main(String a[]) throws Throwable { 
                   new B().doStuf( 1 ); 
       } 
} 

isso compila sem problemas

Parabenzzzzzz a todos…

Resposta correta - B

No Overriding, as Exceptions devem ser do mesmo tipo ou subtipo… Não da SuperClass.

[]'s

poxa, eu compilei e rodei e funcionou. oq será q aconteceu?

veja se você não tem uma outra classe qualquer chamada A no seu classpath :?:

:slight_smile: Não era bem isso, mas me ajudo. Obrigado!

Onde encontro as regras para sobreerscrita de throws???

http://www.freshsources.com/Apr01.html

valeu!!!