我有方法时,各方都知道,它计算三角形的角度:Testng。如何处理这个异常正确
public static double[] calculateTriangleAngles(double a, double b, double c) {
if (a <= 0 || b <= 0 || c <= 0 || a >= b + c || b >= a + c || c >= a + b) {
throw new TriangleTechnicalException("Incorrect side value");
}
double[] angles = new double[3];
angles[0] = round(Math.toDegrees(Math.acos((pow(b, 2) + pow(c, 2) - pow(a, 2))/(2 * b * c))), 2);
angles[1] = round(Math.toDegrees(Math.acos((pow(a, 2) + pow(c, 2) - pow(b, 2))/(2 * a * c))), 2);
angles[2] = round(Math.toDegrees(Math.acos((pow(a, 2) + pow(b, 2) - pow(c, 2))/(2 * a * b))), 2);
return angles;
}
计算算法是正确的。关于例外的问题。它必须扔在这里。
如何正确处理此异常(在此使用throws
或try
/catch
或其他?)?或者更好地抛出它(但这种方法看起来不正确,在测试中包围try
/catch
)?
@Test
public void testCalculateTriangleAnglesTrue() {
double[] expResult = {48.19, 58.41, 73.4};
double[] result = new double[3];
try {
result = TriangleFunctional.calculateTriangleAngles(7, 8, 9);
} catch (TriangleTechnicalException e) {
fail();
}
assertTrue(Arrays.equals(expResult, result));
}
你能帮我解决这个问题吗?
用'throws TriangleTechnicalException'声明它。当调用该方法时,如果可以做到这一点,就用'try' /'catch' **来处理**,或者如果你不能这样做,只需在该方法中添加'TriangleTechnicalException'即可。只有当你知道如何处理它们时才捕捉异常(无论这意味着重试,记录警告,中止程序,无论如何)。 – Blorgbeard
这取决于...你如何*希望*这种方法在这些条件下行为。你是否希望它抛出异常?或者是其他东西?你如何*想要消耗代码来处理它? – David
@Blorgbeard,我想处理这个异常的方法有这种方法 - 'calculateTriangleAngles'。当我用'calculateTriangleAngles'方法使用'throws'时,我想这对测试这种方法来说不是很好。 在试验中'try' /'catch'是很好的做法吗? –