繁体   English   中英

java异常抛出返回

[英]java exception throw return

我创建的以下方法返回一个向量(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)});
}

抛出异常时,该方法不返回任何内容(除非该方法也捕获该异常并且在catch子句中有return语句)。

在您的方法中,只有在未抛出异常时才会执行return语句。 您必须在不抛出异常的任何执行路径中返回LVector

抛出异常会终止该方法。 在这种情况下不会返回任何内容,并且程序的执行将在您捕获异常时继续执行。

如果你真的想计算一个平均值,尽管抛出异常,你可以在你的LCalculateException中添加一个字段。

public class LCalculateException extends Exception{

    public LVector averageResult;

    public LCalculateException(LVector averageResult, String message){
        super(message);
        this.averageResult = averageResult;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM