我创建的以下方法返回一个向量(LVector因为向量已经是某种东西)并且它抛出一个异常。由于该方法是非空的,我是否总是返回一个LVector,或者抛出异常时该方法只是取消了自己?
public static LVector crossProduct(LVector v1, LVector v2) throws LCalculateException{
if(v1.getLength() != 3|| v2.getLength() != 3)
throw new LCalculateException("Invalid vector lengths");
return new LVector(new double[3]{v1.get(1)*v2.get(2)-v1.get(2)*v2.get(1),v1.get(2)*v2.get(0)-v1.get(0)*v2.get(2),v1.get(0)*v2.get(1)-v1.get(1)*v2.get(0)});
}
答案 0 :(得分:1)
当你抛出一个异常时,该方法不会返回任何内容(除非该方法也捕获该异常并且在catch子句中有一个return语句)。
在你的方法中,只有在没有抛出异常时才会执行return语句。您必须在任何不会抛出异常的执行路径中返回LVector
。
答案 1 :(得分:0)
抛出异常会终止该方法。在这种情况下不会返回任何内容,并且您的程序执行将在您捕获异常时继续执行。
答案 2 :(得分:0)
如果尽管抛出异常但您仍想计算平均值,则可以在LCalculateException中添加一个字段。
public class LCalculateException extends Exception{
public LVector averageResult;
public LCalculateException(LVector averageResult, String message){
super(message);
this.averageResult = averageResult;
}
}