JavaScript Birt-Try-catch有效,但仍有错误
JavaScript Birt Try catch works but still errors
我正在修改一个现有的Birt报告,该报告正在使用JavaScript解析XML。当XML没有格式错误时,解析工作正常。现在我正在对它进行测试,这样,如果传递了不正确的XML,它就会返回完整的消息。这是代码:
var xml = fullString.substring(fullString.indexOf("query") + 5);
importPackage(Packages.org.apache.xerces.parsers);
importPackage(Packages.org.xml.sax);
importPackage(Packages.java.io);
var entry = "";
try{
var parser = new DOMParser();
parser.parse(new InputSource(new StringReader(xml)));
var nodelist = parser.getDocument().getElementsByTagName('parsererror');
if(nodelist.length !== 0){
entry = fullString;
}else{
nodelist = parser.getDocument().getElementsByTagName('ProprietaryTag');
for(var i = 0; i < nodelist.length; i++){
entry = entry + nodelist.item(i).getFirstChild().getNodeValue() + " ";
}
}
}catch(err){
entry = fullString;
}
奇怪的是,页面呈现并工作,但日志仍然得到以下
2014-04-29 11:57:30,676 ERROR [STDERR] (http-0.0.0.0-58880-13) [Fatal Error] :1:94: Element type "asdfwefe" must be followed by either attribute specifications, ">" or "/>".
这是一个恰当的错误,但我从其他语言的try/catch中理解到,它应该可以防止这种情况。为什么即使是在try-catch中,错误也会被抛出到日志中?
记录异常和抛出异常是两件不同的事情,库组件(在本例中为xerces)通常会记录描述遇到的错误的消息,然后抛出异常,无论调用程序是否捕捉到异常。
在您的情况下,添加这一行应该会阻止Xerces进行日志记录:
parser.setErrorHandler(null);
相关文章:
- 回复'js'仅当请求有错误时(否则使用html)
- 错误处理try&catch+回调
- 表单已发送,但验证有错误
- 如果文件不存在,fs.watch是否有错误处理程序
- Meteor上有错误的同步问题
- 表单验证:如果有错误,不要't使手风琴动起来
- 我有错误文档.注册元素未被细化
- 如何转换为特定于 json 的类 c#?我有错误
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- 脸书应用程序有错误
- XDomainRequest 总是有错误
- HTML5 Canvas游戏有错误,点击时第一个拼图块会变成不同的块
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 量角器由中继器命令中是否有错误
- Jquery 验证器 - 表单被保存但有错误
- 任何人看到我的重置功能有错误
- 现在我有错误“;ReferenceError:项未定义“;不知道如何测试我的dataService
- 有没有一种方法可以在加载页面后检查iframe是否有错误消息
- JavaScript Birt-Try-catch有效,但仍有错误