我有以下 Java 代码
import org.testng.annotations.Test;
@Test
public void testException(){
try{
Assert.assertEquals(1,2);
} catch(Exception e) {
e.printStackTrace();
}
}
当测试运行时,断言失败并且异常被打印为标准输出并且 TestNG 将测试结果显示为 FAILED。
如果我使用
捕获相同的异常catch(AssertionError e){
e.printStackTrace();
}
异常被打印为错误输出,TestNG 显示测试结果为 PASSED。在这两种情况下都处理异常,但这里有什么区别?
最佳答案
AssertionError
不是 Exception
的子类(它是 Error
的子类),所以第一个片段, catch(Exception e)
处理程序,未捕获它。因此测试结果为FAILED。
第二个代码片段捕获了异常,因此对于TestNG
而言,testException()
的测试没有出现异常,结果为PASSED。
关于java - catch block 直接父类和子类处理异常有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35987218/