将运行时错误的堆栈跟踪打印到文件中

时间:2017-06-21 14:26:04

标签: java junit runtime-error

我有Junit测试,有时它因运行时错误而失败Screen of the Failure trace

我想知道是否有办法捕获此srack跟踪而不使用try catch块并将其存储到文件中。

我正在使用

        if(Thread.currentThread().getStackTrace() != null){

           logger.log(LogStatus.FAIL, "Rune Time Exception");
           report.endTest(logger);
           report.flush();
       }

但是这不知道是否有失败,如果堆栈跟踪中有某些内容,它会进入if语句。有没有办法以某种方式捕捉"错误" JUnit选项卡上的关键字?然后将堆栈跟踪记录到日志文件中?

谢谢

1 个答案:

答案 0 :(得分:1)

您正在寻找的是一个默认的异常处理程序。 (Java UncaughtExceptionHandler

以下是关于使用它的tutorial

//ExceptionHandlerExample.java
package com.air0day.machetejuggling;

public class ExceptionHandlerExample {
  public static void main(String[] args) throws Exception {

    Handler handler = new Handler();
    Thread.setDefaultUncaughtExceptionHandler(handler);

    Thread t = new Thread(new SomeThread(), "Some Thread");
    t.start();

    Thread.sleep(100);

    throw new RuntimeException("Thrown from Main");
  }

}

class Handler implements Thread.UncaughtExceptionHandler {
  public void uncaughtException(Thread t, Throwable e) {
    System.out.println("Throwable: " + e.getMessage());
    System.out.println(t.toString());
  }
}

class SomeThread implements Runnable {
  public void run() {
    throw new RuntimeException("Thrown From Thread");
  }
}