有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中stacktrace中的异常行号

java如何知道异常是在编译代码的哪一行抛出的?类文件中的每个字节码都有关于源文件行的信息吗


共 (2) 个答案

  1. # 1 楼答案

    当您使用生成调试信息标志(-g,或者更具体地说-g:{lines})进行编译时,编译器将向类文件添加调试信息

    对于行号,这是LineNumberTable属性

  2. # 2 楼答案

    当Java程序抛出异常时,将跟踪调用堆栈,直到找到匹配的catch子句。如果没有找到相应的catch子句,Java解释器将捕获异常并打印整个堆栈跟踪。回溯将只包括在中编译的行号

    Sun的javac默认包含行号,而对于某些构建(如Ant的javac),您需要确保在构建中将调试级别设置为true。xml

    参考资料:Ian F Darwin的Java食谱,获取可读的回溯|第31页