首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Xalan捕获异常

从Xalan捕获异常
EN

Stack Overflow用户
提问于 2010-11-09 23:53:03
回答 1查看 951关注 0票数 2

我有一个Java程序(目前运行在JDK1.5中),它在使用Xalan处理XSLT样式表时出现奇怪的异常。我并不是在寻找如何修复这个异常:网上有很多关于这个问题的信息。我只想知道如何在我的代码中捕获异常:

代码语言:javascript
复制
    try {
        TransformerFactory tf = TransformerFactory.newInstance();
        Source src = new SAXSource(new InputSource(new FileInputStream("doc.xsl")));
        Transformer t = tf.newTransformer(src);
        System.out.println(t);
    } catch (TransformerConfigurationException e) {
        System.out.println("the exception was " + e + " and its cause is " + e.getCause());
    }

和输出:

代码语言:javascript
复制
com.sun.org.apache.bcel.internal.generic.ClassGenException: Branch target offset too large for short
at com.sun.org.apache.bcel.internal.generic.BranchInstruction.dump(BranchInstruction.java:99)
at com.sun.org.apache.bcel.internal.generic.InstructionList.getByteCode(InstructionList.java:980)
at com.sun.org.apache.bcel.internal.generic.MethodGen.getMethod(MethodGen.java:616)
at com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileNamedTemplate(Mode.java:556)
at com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileTemplates(Mode.java:566)
at com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileApplyTemplates(Mode.java:818)
at com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.compileModes(Stylesheet.java:615)
at com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.translate(Stylesheet.java:730)
at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:354)
at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:429)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:792)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:614)
at main.Main.main(Main.java:61)
ERROR:  'Branch target offset too large for short'
FATAL ERROR:  'Could not compile stylesheet'
the exception was javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet and its cause is null

我想要做的是捕获代码中的内部异常-- ClassGenException。在我的应用程序中,简单地将其打印为STDERR在我的应用程序中没有用处。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-10 00:04:13

你有没有尝试在你的TransformerFactory上设置一个ErrorListener?

代码语言:javascript
复制
    tf.setErrorListener(new ErrorListener() {

        @Override
        public void warning(TransformerException exception) throws TransformerException {
            ...
        }

        @Override
        public void fatalError(TransformerException exception) throws TransformerException {
            ...

        }

        @Override
        public void error(TransformerException exception) throws TransformerException {
            ...

        }
    });

您的ClassGenException可能可以通过exception.getCause()获得。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4135638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档