我正在尝试编写一个矩阵计算器进行分解。但是,在矩阵计算器中有些情况下,我不希望系统返回任何内容,而只是打印出一条错误消息。
我试图通过用throw新的Exception方法替换return调用来做到这一点,但是它显然似乎不起作用,因为:1.需要实现某种类型的catch / throws和2。仍然需要一个return语句。
public double[][] multiply(Matrix other) {
if(getCols() == other.getRows()) {
double[][] mult = new double[getRows()][other.getCols()];
for(int r = 0; r < mult.length; r++) {
for(int c = 0; c < mult[0].length; c++) {
mult[r][c] = mult(m1[r],findCol(other,c));
}
}
return mult;
}
else {
throw new MatrixException("Multiply");
}
}
从else
语句可以看出,它代替了return
语句,而被throw new MatrixException("Multiply")
取代。这仅返回String语句,但是代码不会编译。有什么方法可以使用try
-catch
方法引发异常而无需实现返回吗?另外,是的,这是我第一次问问题,所以我仍然对问题格式化技术并不完全熟悉。
答案 0 :(得分:3)
您可以通知multiply
的调用方,可以通过更改如下方法来引发异常:
public double[][] multiply(Matrix other)
throws MatrixException
{}
所以现在的方法是:
public double[][] multiply(Matrix other) throws MatrixException { // tells the method throws an exception
if(getCols() == other.getRows()) {
// ...
return <your_valid_return_here>
}
throw new MatrixException("Multiply"); // inform the caller there is an exception if the previous condition is not met
}
此外,请记住MatrixException
是什么类型的异常(选中或未选中),以便遵循此方法。如果选中,则将强制调用方在调用代码中对其进行处理(或报告其代码可能引发异常),而不进行检查的情况将不是这样。
其他阅读内容: