相关疑难解决方法(0)

为什么Java不允许Throwable的泛型子类?

根据Java语言规范,第3版:

如果泛型类是其直接或间接子类,则为编译时错误Throwable.

我希望理解为什么做出这个决定.通用异常有什么问题?

(据我所知,泛型只是编译时的语法糖,他们将被翻译成Object反正在.class文件,因此有效地声明一个泛型类是仿佛一切都在它是一个Object,请纠正我,如果我错了.)

java generics language-design exception

142
推荐指数
4
解决办法
3万
查看次数

JUnit4 fail()就在这里,但是pass()在哪里?

fail()JUnit4库中有一个方法.我喜欢它,但缺乏pass()图书馆中没有的方法.为什么会这样?

我发现我可以使用,assertTrue(true)但看起来仍然不合逻辑.

@Test
 public void testSetterForeignWord(){
  try {
   card.setForeignWord("");
   fail();
  } catch (IncorrectArgumentForSetter ex){
  }

 // assertTrue(true);
 }
Run Code Online (Sandbox Code Playgroud)

java junit

72
推荐指数
3
解决办法
7万
查看次数

在Java中捕获一般的异常?

我们在工作中使用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

java generics exception

35
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×3

exception ×2

generics ×2

junit ×1

language-design ×1