为了账号安全,请及时绑定邮箱和手机立即绑定

为什么catch后就跑出这个异常呢?怎么改?

为什么catch后就跑出这个异常呢?怎么改?

aluckdog 2023-01-12 21:13:36

public static String getStrXML(String reqXML,String temp){//处理积分基本信息查询
Document objDOM = DocumentHelper.createDocument();
try {
objDOM=DocumentHelper.parseText(reqXML);
} catch (DocumentException e) {
// TODO Auto-generated catch block
temp="erro";
e.printStackTrace();
return temp;//想在这里捕获异常后,返回temp给调用该方法的函数,然后继续执行这个函数中的其他语句,而不是后台进程终止执行,怎么处理。。急用,谢谢指点!!!
}
Node node = objDOM.selectSingleNode("//"+temp);
String uu=node.getText();
return uu;
}
org.dom4j.DocumentException: Error on line 1 of document : 元素的内容必须由格式正确的字符数据或标记构成。 Nested exception: 元素的内容必须由格式正确的字符数据或标记构成。
at org.dom4j.io.SAXReader.read(SAXReader.java:482)

查看完整描述

3 回答

?
明月笑刀无情

TA贡献1568条经验 获得超4个赞

什么意思,java的异常设计结构是不可恢复的,即出现异常表明程序不能继续进行catch如果捕获了,程序就不会进行了。不但是java,多数语言的异常模型都是不可恢复的。包括C。
楼上说可以,难道还有别的方法? 

我想了下,如果要实现,多线程可能可以解决,你可以设置一个全局变量static的变量,这样一个线程死亡之前给把参数保留在这个类里面。

楼上说:捕获的范围进行一下调整,catch (DocumentException e)改成catch(Exception e)试试 .是肯定不行的,因为Exception 比DocumentException 要大是它的父类。

查看完整回答
反对 回复 2023-01-15
?
智慧大石

TA贡献1720条经验 获得超3个赞

你说的是继续执行吗?
用finally啊..
try{

}catch{

}finally{
//这里写入的语句不管是否捕获异常都会被执行

查看完整回答
反对 回复 2023-01-15
?
墨色风雨

TA贡献1609条经验 获得超6个赞

你把 temp定义到try之外。然后在遇到异常后,给temp赋值,不要在catch中写什么return就行。

例如:
……………………
Document objDOM = DocumentHelper.createDocument();
String temp ="";
try{
……
}catch (DocumentException e) 
{
temp = "error";
}
Node node = objDOM.selectSingleNode("//"+temp);

查看完整回答
反对 回复 2023-01-15

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信