当前位置: 首页 > 面试题库 >

异常时变量的转储状态

邵正雅
2023-03-14
问题内容

我想知道是否有一种方法可以在发生异常时转储所有局部变量的状态,以更好地了解导致异常的环境状态。idsToDump
在运行时该变量下面是未知的,我想找出集合中的值引起NPE的状态。

例:

public static void main(String[] args) {
    HashMap<Integer, String> employees = new HashMap<Integer, String>();
    employees.put(1, "James");

    Integer[] idsToDump = new Integer[] { 1, 2, 3 };
    for (Integer employeeId : idsToDump) {
        String name = employees.get(employeeId).toLowerCase();
        System.out.println(name + " is employee number: " + employeeId);
    }

}

输出:

james is employee number: 1
Exception in thread "main" java.lang.NullPointerException

问题:是否可以传递一些JVM参数来转储有关局部变量当前状态的信息?即我们得到

java.lang.NullPointerException

和(这是我追求的部分)

values: employeeId=2

我希望能够在客户端站点上执行此操作,因此无法仅通过JVM参数访问Eclipse或调试工具,也无法更改代码。我看过它们,但找不到任何东西。同时,我也会继续搜索;)


问题答案:

考虑到您的所有限制,除了jdb之外,我无法推荐其他任何东西。解雇那个坏男孩,开始一步一步地浏览客户端代码。我知道您说过 没有
调试工具,但是除非它们是仅JRE的环境,否则您应该已经安装了jdb。



 类似资料:
  • 我有以下代码 当我检查是否为null时,我在if条件处得到null指针异常

  • 我有以下代码: 它从“VM参数”中读取并分配给变量。 由于静态最终变量仅在类加载时初始化,因此如何在有人忘记传递参数的情况下捕获异常。 目前,当我使用“property\u file\u location”变量时,在以下情况下会遇到异常: 若值存在,并且位置错误,则会出现FileNotFound异常 如果未正确初始化(值为null),则抛出NullPointerException 我只需要在初始化

  • 问题内容: 是否有快速功能将通过接收到的JSON对象转换为字符串变量转储(用于跟踪/调试)? 问题答案: 是的,可以在此处找到,它包含在Firefox 3.5.4及更高版本中。 JSON字符串反方向,将JavaScript数据结构转换为JSON文本。 JSON不支持循环数据结构,因此请注意不要将循环结构提供给JSON字符串化器。 https://web.archive.org/web/201006

  • 我的程序应该接受一个浮点变量,然后退出。然而,我正在练习一些异常处理的东西,发现了一个问题。当您在这个程序中输入一个字母时,程序当然会抛出一个InputMismatchException,但它会陷入无限循环。我认为我的问题是基于我对try-catch语句和异常处理的误解。 如果我使用不同的变量类型,就不会出现这个问题,所以我不确定这是逻辑错误还是浮点变量的问题。

  • 问题内容: Java语言文档说: 如果将原始类型或字符串定义为常量,并且在编译时知道该值,则编译器会使用其值替换代码中各处的常量名称。这称为编译时常量。 我的理解是,如果我们有一段代码: 然后,编译器会将x代码中每次出现的内容替换为literal 10。 但假设常量在运行时初始化: 与编译时常量相比,性能是否会下降(无论可以忽略不计)? 另一个问题是下面的代码行: 被编译器以与编译时常量相同的方式

  • 环境设置:Axon4.4,H2Database(作为CI的一部分,我们正在进行组件测试)代码如下所示。 我使用的是一个状态存储聚合,但在Spring测试中使用嵌入式H2时,我总是随机地得到错误。在非嵌入式模式下,PGSQL DB不会出现同样的问题,但我们无法在流水线中运行它。 这有什么解决办法?我是否遗漏了一些配置或需要修复Axon代码?