为什么我得到一个预期的进度?要抛出NotATriangleException,但什么都没抛出?下面是代码
public static double calcArea(double a, double b, double c) {
checkTriangle(a, b, c);
double s = (a + b + c)/2;
return Math.sqrt(s * (s - a) * (s - b) * (s - c));
}
private static void checkTriangle(double a, double b, double c) {
try{
checkRatio(a, b, c);
}
catch(Exception e) {
e.toString();
}
}
private static void checkRatio(double a, double b, double c) throws NotATriangleException {
if (a + b <= c) {
throw new NotATriangleException("Wont form a Triangle");
}
这是Junit测试
@Test
Exception b = assertThrows(NotATriangleException.class, () -> {Triangle.calcArea(5,5 ,12 );});
assertEquals("Wont form a Triangle",b.toString());
在checkTriangle
-方法中,您捕获异常。
try{
checkRatio(a, b, c);
}
catch(Exception e) {
e.toString();
}
这意味着当异常发生时,执行将继续。
assertThrows()
只检查未捕获的异常。
为了解决这个问题,您不需要捕获并忽略异常。
使用ununchecked exception或在其他方法中添加throws NotATriangleException