为什么我的`main()`不能捕获junit测试中`timer`抛出的异常?

埃拉德·本达(Elad Benda)

这是我的主要方法:

public static void main(String... args) throws ClassNotFoundException {
    String[] classAndMethod = args[0].split("#");
    if (helpCmd(args)) {
        printHelpForTest(classAndMethod[1]);
        System.exit(0);
    }

    Result result = runTest(classAndMethod);
    exitIfTimeOutExceptionThrown(result);
    System.exit(result.wasSuccessful() ? 0 : 1);
}

private static void exitIfTimeOutExceptionThrown(Result result) {
    boolean isTimeOut = Iterables.filter(result.getFailures(), CodeBlockTimeOutException.class).iterator().hasNext();
    if (isTimeOut)
    {
        System.exit(2);
    }
}

运行此junit测试:

    @Test
    public void sendSearchRequest() throws Exception {

...

        setTimeOut();

...
    }

private void setTimeOut() {
    if (criticalBlockTimeOut != null) {
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                throw new CodeBlockTimeOutException();
                //thread.interrupt();

            }
        };
        new Timer().schedule(timerTask, Long.parseLong(criticalBlockTimeOut));
    }
}

为什么我看到我的代码抛出,CodeBlockTimeOutException但是它的主代码永远不会退出2?

我如何将其扔到主线程中?

米哈伊尔

计时器事件发生在另一个线程中。主线程退出而没有错误。错误是从另一个日志记录的。如果出现异常,则应从计划的作业中设置一些易失性标志。等待作业在主线程中完成,然后检查此标志。

在这里看看:等待计时器完成JavaJava:等待TimerTask完成,然后继续执行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

为什么我不能捕获OOM异常?

来自分类Dev

为什么我不能从异步代码中捕获异常?

来自分类Dev

当我的lua代码抛出错误时,为什么不能捕获luabind :: error异常?

来自分类Dev

为什么我不能多次捕获异常?

来自分类Dev

为什么我的程序抛出StringIndexOutOfBounds异常?

来自分类Dev

(为什么)我不能从生成器中抛出异常吗?

来自分类Dev

为什么我不能在Java中抛出或捕获泛型类的实例?

来自分类Dev

我为什么要关心Java中捕获的异常?

来自分类Dev

为什么我的函数抛出“ StopIteration”异常?

来自分类Dev

为什么我不能捕获C ++中的递归lambda函数?

来自分类Dev

为什么我无法在MarkLogic请求中捕获某些异常?

来自分类Dev

为什么允许在Java中抛出的异常的捕获亚型

来自分类Dev

为什么需要首先捕获ArrayIndexOutOfBoundsException异常,然后抛出IndexOutOfBoundsException?

来自分类Dev

为什么我不能捕获OOM异常?

来自分类Dev

为什么我不能捕获从node-postgres抛出的错误?

来自分类Dev

为什么`catch`不能捕获这个异常?

来自分类Dev

Java / Eclipse我的main中没有代码,并且main抛出错误,为什么?

来自分类Dev

为什么我不能在方法中引发异常(Java)

来自分类Dev

为什么我们使用junit 4 + Mockito抛出异常并断言它引发了异常

来自分类Dev

当我的lua代码引发错误时,为什么不能捕获luabind :: error异常?

来自分类Dev

如何测试在junit中引发并捕获了异常

来自分类Dev

为什么我不能多次捕获该异常?

来自分类Dev

为什么我不能在JUnit中定义期望的ParseException?

来自分类Dev

为什么我的`main()`不能捕获junit测试中`timer`中抛出的异常?

来自分类Dev

从JUnit测试中捕获并重新抛出异常

来自分类Dev

为什么SIGSEGV的信号处理程序没有捕获我的C ++抛出异常?

来自分类Dev

为什么我不能正确捕获此异常?

来自分类Dev

为什么我抛出了“System.StackOverflowException”类型的异常。在我自己的 htmlhelper 中?

来自分类Dev

抛出异常的方法的 JUnit 测试

Related 相关文章

  1. 1

    为什么我不能捕获OOM异常?

  2. 2

    为什么我不能从异步代码中捕获异常?

  3. 3

    当我的lua代码抛出错误时,为什么不能捕获luabind :: error异常?

  4. 4

    为什么我不能多次捕获异常?

  5. 5

    为什么我的程序抛出StringIndexOutOfBounds异常?

  6. 6

    (为什么)我不能从生成器中抛出异常吗?

  7. 7

    为什么我不能在Java中抛出或捕获泛型类的实例?

  8. 8

    我为什么要关心Java中捕获的异常?

  9. 9

    为什么我的函数抛出“ StopIteration”异常?

  10. 10

    为什么我不能捕获C ++中的递归lambda函数?

  11. 11

    为什么我无法在MarkLogic请求中捕获某些异常?

  12. 12

    为什么允许在Java中抛出的异常的捕获亚型

  13. 13

    为什么需要首先捕获ArrayIndexOutOfBoundsException异常,然后抛出IndexOutOfBoundsException?

  14. 14

    为什么我不能捕获OOM异常?

  15. 15

    为什么我不能捕获从node-postgres抛出的错误?

  16. 16

    为什么`catch`不能捕获这个异常?

  17. 17

    Java / Eclipse我的main中没有代码,并且main抛出错误,为什么?

  18. 18

    为什么我不能在方法中引发异常(Java)

  19. 19

    为什么我们使用junit 4 + Mockito抛出异常并断言它引发了异常

  20. 20

    当我的lua代码引发错误时,为什么不能捕获luabind :: error异常?

  21. 21

    如何测试在junit中引发并捕获了异常

  22. 22

    为什么我不能多次捕获该异常?

  23. 23

    为什么我不能在JUnit中定义期望的ParseException?

  24. 24

    为什么我的`main()`不能捕获junit测试中`timer`中抛出的异常?

  25. 25

    从JUnit测试中捕获并重新抛出异常

  26. 26

    为什么SIGSEGV的信号处理程序没有捕获我的C ++抛出异常?

  27. 27

    为什么我不能正确捕获此异常?

  28. 28

    为什么我抛出了“System.StackOverflowException”类型的异常。在我自己的 htmlhelper 中?

  29. 29

    抛出异常的方法的 JUnit 测试

热门标签

归档