当前位置: 首页 > 知识库问答 >
问题:

Android JSONTokener-未捕获nextCleanInternal的空指针异常

扈瑞
2023-03-14

我正在通过一个JSONObject在我的onCreative()方法。它被包围在一个尝试/捕获块中,我曾认为它会捕获所有异常,但它似乎仍在遇到一个nullpointerest x的拦截,并使应用程序崩溃。我已经检查到位,以确保我在对象中搜索的字符串不是空/空,我不确定如何防止异常。代码和堆栈跟踪如下:

Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        JSONObject notificationData;
        try {
            notificationData = new JSONObject(bundle.getString("com.parse.Data"));
            if(notificationData.getString("targetUrl") != null && !notificationData.getString("targetUrl").equals("")){
                //do stuff
            }
        } catch (Exception e) {
        }
    }
}

错误在这一行:

notificationData = new JSONObject(bundle.getString("com.parse.Data"));

堆栈跟踪:

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.Test/com.example.Test.MainActivity}:
java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
at org.json.JSONTokener.nextValue(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:155)
at org.json.JSONObject.<init>(JSONObject.java:172)
at com.example.Test.MainActivity.onCreate(SourceFile:293)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)

我不太有经验使用JSONObject在Java /Android.我能做些什么来防止这个空指针发生?

共有1个答案

端木兴国
2023-03-14

不建议尝试捕捉NPE。

我假设您的代码崩溃是因为bundle。getString(“com.parse.Data”)实际上是null

我建议检查null,因此如下更改:

if (bundle != null && bundle.getString("com.parse.Data") != null)

这将避免你得到的NPE。如果您确实设法从捆绑包中取出了字符串,那么在尝试构建JSONObject时可能还会遇到其他异常。无法帮助您,需要查看更多的代码。

 类似资料:
  • 问题内容: 最近,我的一位同事编写了一些代码,以捕获整个方法周围的空指针异常,并返回单个结果。我指出了空指针可能有多种原因,因此我们将其更改为对一个结果的防御性检查。 但是,捕获NullPointerException对我来说似乎是错误的。在我看来,空指针异常是错误代码的结果,而不是系统中预期的异常。 在任何情况下捕获空指针异常都有意义吗? 问题答案: 是的,捕获任何东西几乎总是一种代码气味。该C

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 我现在使用的是Itext PDFSmartCopy。我正在使用XMLWorker向document对象添加一些业务内容。然后我声明了一个阅读器(用于连接到此文档对象的pdf文件)。然后我用相同的文档对象和输出文件流作为参数调用PdfSmartCopy。然后使用常规步骤将页面复制到文档中, 但如果我使用一个新的文档对象ie而不添加业务内容,则这一块工作得很好。

  • 当我试图从DB查询结果时,我得到一个空指针异常。以下是错误: 这是错误产生的函数。 如果我启动应用程序信息服务(=new ApplicationInfoService()),我会得到一个指向我的服务类的空指针错误,在这里进行查询 错误转到createQuery行,如果我打印出EntityManager,它将返回“null”。为什么我的Entitymanager不能初始化。我在我的登录系统中使用了几

  • 问题内容: 我正在为Android开发Java应用程序,目前遇到了一个问题,调试器正在进入catch块,并且ex为何为null?有人看过这样的东西吗? 问题答案: 这听起来像源代码,并且编译的类不同步,因此调试器正在进入错误的块。 尝试进行清理,然后进行重建。