gpt4 book ai didi

java - 未报告的异常 ParseException;必须被捕获或声明被抛出——JAVA错误

转载 作者:行者123 更新时间:2023-12-02 09:04:15 24 4
gpt4 key购买 nike

我正在 JSF 中构建一个 Java 应用程序,该应用程序向 API 发出请求,获取 JSON 并使用 JSON 信息填充表...

这是代码:

@ManagedBean(name = "logic", eager = true)
@SessionScoped
public class Logic {

static JSONObject jsonObject = null;
static JSONObject jo = null;
static JSONArray cat = null;


public void connect() {
StringBuilder sb = new StringBuilder();
try {
URL url = new URL("xxx");
URLConnection yc = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;

while((inputLine = in.readLine())!= null){
System.out.println(inputLine);
sb.append(inputLine+"\n");
in.close();

}






}catch(Exception e) {System.out.println(e);}

try {
JSONParser parser = new JSONParser();

jsonObject = (JSONObject) parser.parse(sb.toString());
cat = (JSONArray) jsonObject.get("mesaje");
jo = (JSONObject) cat.get(0);
jo.get("cif");

System.out.println(jo.get("cif"));
}catch(Exception e){System.out.println(e);}
}




private String cif;



final static private ArrayList<Logic> logics = new ArrayList<Logic>(Arrays.asList(new Logic(jo.get("cif").toString())));



public ArrayList<Logic> getLogics() {
return logics;
}

public Logic() {

}

public Logic(String cif) throws ParseException {
this.cif = cif;
connect();
}

public String getCif() {
return cif;
}

public void setCif(String cif) {
this.cif = cif;
}




}

上线 67 -> final static private ArrayList<Logic> logics = new ArrayList<Logic>(Arrays.asList(new Logic(jo.get("cif").toString())));

它在 Netbeans 中给了我这个错误:未报告的异常 ParseException;必须被捕获或宣布被扔出。我尝试将它包围在 try catch 中,但它在代码的其他部分给出了其他错误...我能做什么才能运行应用程序?

提前致谢

最佳答案

据我了解,您尝试过类似的操作

try {
final static private ArrayList<Logic> logics = new ArrayList<Logic>(Arrays.asList(new Logic(jo.get("cif").toString())));
} catch (Exception e) {
e.printStackTrace();
}

问题是,该行不在方法内部,并且您不能使用 try...catch那里。

解决此问题的快速方法是将初始化放在 static 中 block

public class Logic {
final static private ArrayList<Logic> logics;


static {
try {
logics = new ArrayList<Logic>(Arrays.asList(new Logic(jo.get("cif").toString())));
} catch (Exception e) {
e.printStackTrace();
}
}

// rest of your class...
}

但说实话,我想知道你为什么声明 logicsstatic 。从代码的其余部分来看,这一点并不明显。另外,我看到你有一个非静态 getLogics()方法。所以我想说,如果真的没有理由将其声明为 static ,只需将其设置为非静态并在构造函数中初始化它,您可以在其中使用 try...catch随心所欲。

关于java - 未报告的异常 ParseException;必须被捕获或声明被抛出——JAVA错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59948201/

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