很抱歉,如果我没有正确地问它,我现在正在大学读java课程,而且我是初学者..
所以我想问的是,我创建了一个构造函数并声明该构造函数抛出异常。现在当我为这个名为add
的类创建一个方法时,我收到一个错误,我没有抓住我在这个方法中创建的新(Matrix)对象的错误。
所以我想问一下,无论何时我都会在任何地方使用这个构造函数来捕获它?我可以在构造函数中捕获它,它不会再打扰我,或者可能带来麻烦..?
这是我的代码:
public class Matrix implements Arithmetic, InputOutput {
private static final Matrix Matrix = null;
// Class attributes
int [][] data;
private Scanner myScanner;
// Class constructor - can be created only when a user provide positive columns and rows
public Matrix(int r, int c) throws DidNotProvideMatrixData
{
if (r <= 0 || c <= 0) {
throw new DidNotProvideMatrixData("There got to be Rows and Columns and they have to be positive!");
} else {
this.data = new int[r][c];
}
}
public Matrix add(Object o)
{
try {
if (o instanceof Matrix && o != null) {
Matrix matrixToAdd = (Matrix)o;
if (this.data.length == matrixToAdd.data.length && this.data[0].length == matrixToAdd.data[0].length) {
Matrix resultMatrix = new Matrix(this.data.length, this.data[0].length);
for (int i = 0; i < this.data.length; i++) {
for (int j = 0; j < this.data[i].length; j++) {
resultMatrix.data[i][j] = this.data[i][j] + matrixToAdd.data[i][j];
}
}
return resultMatrix;
} else {
throw new AddedDiffSizedMatrix();
}
}
}
catch (AddedDiffSizedMatrix e) {
System.out.println("you can only add matched size matrix");
}
catch (DidNotProvideMatrixData e) {
System.out.println("There got to be Rows and Columns and they have to be positive!");
}
return null;
}
编译器告诉我,我必须在add
非常感谢!
答案 0 :(得分:4)
同样的规则适用于方法中抛出的异常:
如果他们被检查了异常,你必须处理它们(抓住或重新抛出)
如果它们是RuntimeExceptions,则您不必(但当然代码仍然会出错)
如果从构造函数中获取异常,则没有构造任何实例,因此无论您尝试用它做什么(例如分配给变量)都不会发生(与那里的方法的返回值相同)是一个例外,你也没有。)