我应该编写例外来防止无效对象,例如字符串没有空格或者double和int数字在某个范围内。我真的很困惑如何做到这一点。我应该使用if / else语句吗?或者更多的try / catch语句?
编辑:需要验证每个对象。字符串不能有空格或只包含空格,数字不能小于零。还有其他五个try / catch语句,但我只包括一个。我的问题是我会写什么,以便异常输出对于不同的问题是不同的,有没有办法写它以避免为每个单独的try / catch编写每个异常?我查看了关于编写异常的其他帖子,但我还没有了解超级是什么或者做什么,不能使用它。
public class CD {
String artistname = "";
String albumname = "";
double cdprice = 0;
int amountinstock = 0;
public CD(final String artistname, final String albumname, final double cdprice, final int amountinstock) {
this.artistname = artistname;
this.albumname = albumname;
this.cdprice = cdprice;
this.amountinstock = amountinstock;
}
public static void main(final String[] arg) throws Exception {
try {
final CD cd1 = new CD("Muse", "The Resistance", 11.99, 20);
System.out.println(cd1.toString());
System.out.println("=========================");
} catch (final CDException cde) {
System.out.println(cde.getMessage());
System.out.println("=========================");
}
}
}
答案 0 :(得分:1)
我会用if语句检查String,int,...如果出现错误,请抛出IllegalArgumentException
。
答案 1 :(得分:1)
首先,您必须编写检查输入是否无效的条件(即if语句)。当您检测到无效输入时,您应该抛出异常。
答案 2 :(得分:1)
您可以编写自定义异常,如提到的here。
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
您可以为自定义异常提供一些逻辑名称,例如IntegerNumberOutofRangeException
。
然后你可以在你的代码中使用if else并为你提到的特定条件抛出自定义异常。
代码
int intNumber = 50;
if (intNumber > 60 && intNumber < 100) {
// Do your work
} else {
throw new CustomException("Integer number out of expected range of 60 to 100");
}
答案 3 :(得分:-1)
您应该使用IF进行验证。
最佳做法是不要从类的构造函数中抛出异常。 另一个最佳实践是不在类的构造函数中进行验证。 所以你的代码会有所改进(我没有运行它,并且仍有改进):
public class CD {
String artistname = "";
String albumname = "";
double cdprice = 0;
int amountinstock = 0;
public String ValidationMessage = "";
public CD(final String artistname, final String albumname, final double cdprice, final int amountinstock) {
this.artistname = artistname;
this.albumname = albumname;
this.cdprice = cdprice;
this.amountinstock = amountinstock;
}
public boolean ValidateCD()
{
this.ValidationMessage = "";
if (/*insert validation condition here*/)
{
this.ValidationMessage = "CD IS NOT VALID BECAUSE TITLE IS WRONG";
return false;
}
return true;
}
public static void main(final String[] arg) throws Exception {
final CD cd1 = new CD("Muse", "The Resistance", 11.99, 20);
final boolean isValid = cd1.ValidateCD();
if (!isValid) {
System.out.println(cd1.ValidationMessage);
}
}
}