gpt4 book ai didi

Java:异常本身为空

转载 作者:IT老高 更新时间:2023-10-28 21:20:04 26 4
gpt4 key购买 nike

我很困惑。是 Android 的问题还是 Java 本身的问题?

当我在调试一个使用蓝牙的 Android 应用程序时,流程在 IOException 的 catch block 上停止,后来我发现异常 e 为 null....我试图从 InputStream 中读取数据。

是的,它不是 NullPointerException,而是其他类型的 null 异常 - 最好说抛出未初始化。

有可能吗?在什么情况下会抛出这样的单元化异常?

An exception is null... Note: it's NOT a null pointer exception!!

最佳答案

Is it possible? In which scenario such unitialized exceptions can be thrown??

使用符合标准的 Java 编译器和符合标准的 Java 虚拟机是不可能的,并且通过扩展符合标准的 Dalvik虚拟机。 JLS 不允许 e 变量在该位置为 null

要么你的虚拟机有问题,调试器有问题,要么你的 IDE、构建工具和/或进程有问题。

如果我遇到你的情况,我会停止现在使用调试器,然后转而向你的代码添加老式的跟踪打印。并确保从源代码进行干净且完整的构建。


您应该考虑的另一种可能性是,JRE 在运行时报告的行号(以及调试器所依赖的)与源代码中的行号不一致。如果您在构建和部署过程中犯了错误,则可能会发生这种情况。错误可能类似于忘记保存文件、忘记构建、忘记部署新版本的应用程序或让您的 IDE 与文件系统不同步。


对于它的值(value),理论是这是由 throw null; 或类似的东西引起的不成立。 JLS section 14.18说:

"If evaluation of the Expression completes normally, producing a null value, then an instance V' of class NullPointerException is created and thrown instead of null."

如果您在上下文中阅读该句子会更容易理解,但它清楚地表明 throw null; 实际上会抛出 NullPointerException


更新

我在堆栈溢出问题中找到了另一个合理的解释: Exception is always NULL

基本上,这是说模拟代码抛出了一个 Eclipse 不知道的异常,而 Eclipse 模拟器正在“有用地”替换一个 null。这听起来像是一个模拟器错误。

关于Java:异常本身为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com