在构造函数中抛出异常 (java)

Throwing an exception in constructor (java)

Utwor(String x, String y, Integer z) {
    tytul1 = x;
    wykonawca2 = y;
    rok3 = z;
      if (z < 1900 || z > 2015) {
            System.out.println("Rok utworu musi się zawierać pomiędzy 1900, a 2015.");
            throw new IllegalArgumentException("Invalid cents value: " + z);

        }
}

z 应该在 1900-2015 之间,并且有效。但是我不希望我的程序完全停止而是再次询问这个变量。我不确定我的做法是否正确,因为我的老师刚刚给了我示例代码 throw new Exception("Tytuł utworu nie może być pusty!"); 就是这样。

在你调用你的方法 Utwor 的地方,你必须把它放在一个 try catch 块中。

boolean zIsOk = false;
do{
    try{
      Utwor(x, y, z);
      zIsOk = true;
    }
    catch(IllegalArgumentException e){
      zIsOk = false;
    }
while(!zIsOk)

也许这不是最佳答案,但它确实有效:)

如果您必须要求用户重新输入 z 编号,您可以在 catch 块中添加 Console.ReadLine()。