Java:未报告的异常;必须被抓住或宣布被抛出

Java:未报告的异常;必须被抓住或宣布被抛出,java,exception,Java,Exception,我得到这个错误: /student/src/reflection/tester/TestRunnerTests.java:21:error:unreported异常;必须捕获或声明为抛出testRunner.runTests(TestClassName) 因此,它显示错误必须在testRunner.runTests(testClassNames)上行: public class TestRunnerTests { @Test public void runsTestsFromD

我得到这个错误:

/student/src/reflection/tester/TestRunnerTests.java:21:error:unreported异常;必须捕获或声明为抛出testRunner.runTests(TestClassName)

因此,它显示错误必须在
testRunner.runTests(testClassNames)上行:

public class TestRunnerTests {

    @Test
    public void runsTestsFromDecoupledFiles() throws Exception {

        List<String> testClassNames = List.of(
                "reflection.tester.ExampleTests1", "reflection.tester.ExampleTests2");

        TestRunner testRunner = new TestRunner();

        testRunner.runTests(testClassNames);

        String result = testRunner.getResult();

        assertThat(result, containsString("test1() - OK"));
        assertThat(result, containsString("test2() - FAILED"));
        assertThat(result, containsString("test3() - OK"));
        assertThat(result, containsString("test4() - FAILED"));
        assertThat(result, containsString("test5() - OK"));
        assertThat(result, containsString("test6() - FAILED"));

        assertThat(result, not(containsString("helperMethod()")));
    }
}

我该如何解决它呢?

如果你抛出一个例外,你必须在任何地方抓住它。因此,您需要将方法“runTests”的调用包装到一个try-catch中

(常规:您需要捕获此实例外部引发的异常)

你写道:
testRunner.runTests(testClassNames)

尝试:
try{testRunner.runTests(testClassNames);}catch(Exception e){…}

如上所示,我在上面尝试过,但仍然不起作用:/No如果我在您编写的第一个代码段中看到正确的话,您没有尝试:
testRunner.runTests(testClassNames)
try:
try{testRunner.runTests(testClassNames);}catch(异常e){…}
当您尝试它时,您只抛出了一个新异常:
抛出新异常(e)但您需要捕获此实例以外的任何位置的此异常,不要抛出新异常,或者不在其中写入任何内容或执行某些操作,但不要抛出新异常如果遇到更多问题,请告诉我这是否回答了您的问题?
public class TestRunner{
   List<String> result = new LinkedList<>();
   List<String> annotatedMethods = new LinkedList<>();

   public void runTests(List<String> testClassNames) throws Exception {
       for (String test: testClassNames) {
           Class<?> aClass = Class.forName(test);
           getClassMethods(aClass);
       }
   }
.....
} 
try{
   for (String test: testClassNames) {
        Class<?> aClass = Class.forName(test);
        getClassMethods(aClass);
   }  
} catch (Exception e){
   throw new Exception(e);
}