在这里尝试调试XPages应用程序。当出现Java异常时,XPages在log.nsf中给了我很多行,而当它变得有趣时,它会说:

2015/09/06 17:32:53 HTTP JVM:...还有81个

至少可以这样说,这真令人讨厌。第一个实际错误始终在stacktrace的底部。

是否可以设置系统参数以获得完整的堆栈跟踪信息?

谢谢!

最后一部分,来自log.nsf数据库:

09/06/2015 17:31:15   HTTP JVM: Caused by:
09/06/2015 17:31:15   HTTP JVM: java.lang.NullPointerException
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.domino.utils.DominoUtils.isHierarchicalName(DominoUtils.java:412)
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.arpa.NamePartsMap.parse(NamePartsMap.java:545)
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.arpa.NamePartsMap.parse(NamePartsMap.java:532)
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.arpa.NamePartsMap.<init>(NamePartsMap.java:103)
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.domino.impl.Name.parse(Name.java:1045)
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.domino.impl.Name.parse(Name.java:1060)
09/06/2015 17:31:15   HTTP JVM:     at org.openntf.domino.impl.Name.getCommon(Name.java:593)
09/06/2015 17:31:15   HTTP JVM:     ... 81 more


解决了

    var author= doc.getItemValueString("Author");
    if(author) {
        var editor:NotesName= session.createName(author);
        adoc.replaceItemValue("Editor", editor.getCommon());
    }


我添加了一个简单的测试来验证作者是否为空。在文档中曾经使用Author字段,而在空的NotesName上的getCommon似乎会生成异常。

最佳答案

我认为e.printStackTrace();可以为您提供整个功能。您可以单独使用这条线。它不能是System.out.println的一部分,尽管我实际上是这样做的,但我尝试这样做。

您可以将其放在catch块中。因此整个代码将是:

catch (Exception e){
            e.printStackTrace();
        }


话虽这么说,我不能一次记住在堆栈跟踪的“另外81条”行中有用的东西。只需搜索“由...引起的”



通常,即使代码不是强制性的,您也希望将代码包围在try/catch块中。通常认为使用日志记录来捕获错误比使用System.out.println和/或printStackTrace()写入Notes日志更好。

关于java - XPages:我需要完整的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30736883/

10-09 04:45