根据Java语言规范,第3版:
我希望理解为什么做出这个决定.通用异常有什么问题?
(据我所知,泛型只是编译时的语法糖,他们将被翻译成Object反正在.class文件,因此有效地声明一个泛型类是仿佛一切都在它是一个Object,请纠正我,如果我错了.)
fail()JUnit4库中有一个方法.我喜欢它,但缺乏pass()图书馆中没有的方法.为什么会这样?
我发现我可以使用,assertTrue(true)但看起来仍然不合逻辑.
@Test
public void testSetterForeignWord(){
try {
card.setForeignWord("");
fail();
} catch (IncorrectArgumentForSetter ex){
}
// assertTrue(true);
}
Run Code Online (Sandbox Code Playgroud) 我们在工作中使用JUnit 3并且没有ExpectedException注释.我想在我们的代码中添加一个实用程序来包装它:
try {
someCode();
fail("some error message");
} catch (SomeSpecificExceptionType ex) {
}
Run Code Online (Sandbox Code Playgroud)
所以我尝试了这个:
public static class ExpectedExceptionUtility {
public static <T extends Exception> void checkForExpectedException(String message, ExpectedExceptionBlock<T> block) {
try {
block.exceptionThrowingCode();
fail(message);
} catch (T ex) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我认为Java不能在catch块中使用泛型异常类型.
我怎么能做这样的事情,解决Java限制?
有没有办法检查ex变量是否类型T?