2017-03-04 2 views
0

Ich habe versucht, eine Ausnahmeklasse zu schreiben, und hier ist mein Code:Warum ruft die JUnit "Objekt" und nicht "Ausnahme"?

public class DealWithMeException { 
    public DealWithMeException(String message){ 
     message="To make a class a checked exception it needs be a subclass of the appropriate Java class"; 
    } 
} 

Wenn ich meine JUnit Test ausführen, immer der Fehler kommt und sagt „Aufruf Java.long.object statt Java.long .exceptions“

und hier ist meine JUnit-Testcode:

public class ExceptionsTest { 
    @Test 
    public final void testCheckedException() { 
    Class<DealWithMeException> cut = DealWithMeException.class; 
    assertEquals("To make a class a checked exception it needs be a subclass of the appropriate Java class", 
       Exception.class, cut.getSuperclass()); 
    } 
} 

Was ist passiert?

Antwort

1

Sie haben die Ausnahmeklasse falsch deklariert. Eine Ausnahmeklasse muss extend eine vorhandene Ausnahmeklasse sein; z.B. Exception oder RuntimeException. (Die technische Voraussetzung ist, dass eine Ausnahmeklasse eine Unterklasse von java.lang.Throwable sein muss, aber es ist eine wirklich schlechte Idee, diese Klasse direkt zu erweitern.)

Ihre Deklaration erweitert nichts explizit. Das bedeutet, dass es implizit erweitert Object. Mit anderen Worten, es ist nicht eine gültige Ausnahmeklasse. Die Tatsache, dass Sie der Klasse einen Namen gegeben haben, der mit ...Exception endet, ist immateriell.

Kurz gesagt, der JUnit-Test sagt die Wahrheit.

+0

Vielen Dank! – Yang

Verwandte Themen