gpt4 book ai didi

java - 如何通过java中的构造函数验证输入

转载 作者:行者123 更新时间:2023-12-02 11:12:52 25 4
gpt4 key购买 nike

我读到可以创建一个构造函数来检查输入是否正确,并且我尝试使用 IllegalArgumentException 来执行此操作。我的代码只要不创建对象就可以正常工作,无论输入正确与否,编译器都会给出错误。这是我的代码:

public class Knoten{
private String typ;

public Knoten(String typ) throws Exception{
try{
if (typ.equals ("BASE")||typ.equals ("WORD")||typ.equals ("ROOT")||typ.equals ("AFFIX")){
this.typ=typ;
}}catch(IllegalArgumentException ex){
System.out.println ("invalid typ");
}}
public String getTyp(){
return typ;
}

public String toString(){
return "typ: "+getTyp();
}

public static void main (String args[]){
Knoten Knot1= new Knoten("haha");//throws error
Knoten Knot2= new Knoten("BASE");//throws error
}}

我也尝试这样做,得到了相同的结果:

public class Knoten{
private String typ;

public Knoten(String typ) throws Exception{
if (typ.equals ("BASE")||typ.equals ("WORD")||typ.equals ("ROOT")||typ.equals ("AFFIX")){
this.type=type;
}else{
throw new IllegalArgumentException("invalid type");
}

}
public String getTyp(){
return typ;
}

public String toString(){
return "typ: "+getTyp();
}

public static void main (String args[]){
Knoten Knot1= new Knoten("haha");//throws error
Knoten Knot2= new Knoten("BASE");//throws error

}

}

所以我的问题是,每次创建该类的对象时是否都必须处理异常,或者是否有更好的方法来执行此操作。

最佳答案

我相信您遇到编译错误,例如:未处理的异常类型异常,并且您在抛出Checked Exception (java.lang.来自构造函数的异常)。不要在抛出中放置任何异常或尝试抛出未经检查的异常,例如:

public Knoten(String type) throws IllegalArgumentException { // throws unchecked exception is optional
if (type.equals("BASE") || type.equals("WORD") || type.equals("ROOT") || type.equals("AFFIX")) {
this.type = type;
} else {
throw new IllegalArgumentException("invalid type");
}

}

或者围绕它的构造函数try catch/finally

try {
Knoten Knot1 = new Knoten("haha");
} catch (Exception e) {
e.printStackTrace();
}

关于java - 如何通过java中的构造函数验证输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50493958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com