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);
}