在构造函数中抛出异常 (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()。
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()。