Java 未报告的异常/this()必须是第一条语句
我正在编写一个非常简单的java类,我遇到了一个奇怪的问题,我知道有很多简单的方法可以解决它,但现在我有一个疑问Java 未报告的异常/this()必须是第一条语句,java,exception,Java,Exception,我正在编写一个非常简单的java类,我遇到了一个奇怪的问题,我知道有很多简单的方法可以解决它,但现在我有一个疑问 public class Frazione { private int num; private int den; public Frazione(int x, int y) throws FrazioneException { if (y == 0) { throw new FrazioneException();
public class Frazione {
private int num;
private int den;
public Frazione(int x, int y) throws FrazioneException {
if (y == 0) {
throw new FrazioneException();
}
num = x;
den = y;
}
/*public Frazione(int x){ THAT'S HOW IT SHOULD BE BASED
ON THE EXCERCISE BUT IT WON'T
COMPILE BECAUSE THIS ISN'T THE
FIRST STATEMENT
try{
this(x,1);
}catch(FrazioneException e){
System.err.print("errore: "+e);
}
}*/
/*public Frazione(int x){
this(x,1); IF I TRY THIS WAY I'LL BE IN
AN UNREPORTED EXCEPTION PROBLEM
}*/
public int getNum() {
return num;
}
public int getDen() {
return den;
}
}
有一种方法可以在这个()语句中使用try-and-catch?是的,这不起作用。您必须满足两个相互矛盾的要求:
此
调用必须是第一条语句this
调用必须位于try..catch
语句中- 如果要在构造函数中抛出选中的异常,请在另一个构造函数中也抛出它。但这并没有真正的意义,因为它永远不会被抛出,因为您永远不会通过
y=0
- 将
转换为运行时异常,并删除FrazioneException
抛出的
- 尝试在不引发构造函数异常的情况下解决您的需求(我通常避免这种情况,因为它通常会导致太多的麻烦,就像您所遇到的那样)
调用必须是第一条语句此
调用必须位于this
语句中try..catch
所以这个问题无法解决
你能做的是:
- 如果要在构造函数中抛出选中的异常,请在另一个构造函数中也抛出它。但这并没有真正的意义,因为它永远不会被抛出,因为您永远不会通过
y=0
- 将
转换为运行时异常,并删除FrazioneException
抛出的
- 尝试在不引发构造函数异常的情况下解决您的需求(我通常避免这种情况,因为它通常会导致太多的麻烦,就像您所遇到的那样)
是的,这不起作用。您必须满足两个相互矛盾的要求:
IllegalArgumentException
(从RuntimeException继承)而不是选中的异常FrazioneException?那么公共Frazione(intx)抛出FrazioneException{this(x,1);}
为什么不抛出一个IllegalArgumentException
(继承自RuntimeException)而不是选中的异常FrazioneException?那么public Frazione(intx)抛出FrazioneException{this(x,1);}